জ্যাঙ্গো ফ্রেমওয়ার্ক ব্যবহার করে কীভাবে মোবাইল-বান্ধব ওয়েব অ্যাপ্লিকেশন তৈরি করবেন - পার্ট 3


এই সিরিজের অংশ 1 এ আপনি শিখলেন যে কীভাবে ভার্চুয়াল পরিবেশে জ্যাঙ্গো ইনস্টল করা ও কনফিগার করা যায় এবং আপনি আপনার প্রথম প্রকল্পের কঙ্কাল তৈরি করেছিলেন।

তারপরে পার্ট 2-এ আমরা পোস্ট অবজেক্টের জন্য একটি অ্যাপ্লিকেশন এবং একটি মডেল তৈরি করেছি, যা আমরা পরে ডেটাবেসে স্থানান্তরিত করেছি। অবশেষে, আমরা আপনাকে দেখিয়েছি কীভাবে জাজানো প্রশাসনের ব্যবহারকারী ইন্টারফেসে আপনার নতুন নির্মিত অ্যাপ্লিকেশনটিকে সংহত করতে হয়।

এই নিবন্ধগুলি জাঙ্গো সিরিজের অংশ:

এই চূড়ান্ত গাইডে আমরা কীভাবে ইউআই ব্যবহার করে অ্যাপ্লিকেশনটি অ্যাক্সেস করব এবং কীভাবে এটি সমস্ত ধরণের ডিভাইসের জন্য মোবাইল-বান্ধব করে তুলব তা আলোচনা করব। এটি বলেছিল, আসুন শুরু করা যাক।

জ্যাঙ্গো অ্যাডমিন ইন্টারফেসের মাধ্যমে অবজেক্ট তৈরি করা হচ্ছে

পোস্টের ধরণের অবজেক্ট তৈরি করতে (এটি মনে রাখবেন যে আমরা এই সিরিজের অংশ 2 এ সংজ্ঞায়িত মডেল), আমরা জ্যাঙ্গো অ্যাডমিন ইন্টারফেসটি ব্যবহার করব।

জ্যাঙ্গো অন্তর্নির্মিত ওয়েব সার্ভারটি 8000 পোর্টে (বা আপনার পছন্দের অন্য কোনওটি) বাইরের মাইফিস্টডজ্যাঙ্গোপ্রজেক্ট ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে চলছে তা নিশ্চিত করুন:

# cd ~/myfirstdjangoenv/myfirstdjangoproject
# python manage.py runserver 0.0.0.0:8000

এখন আপনার ওয়েব ব্রাউজারটি খুলুন এবং HTTP:/আইপি-ঠিকানা: 8000/অ্যাডমিন এ নির্দেশ করুন, তারপরে আপনি আগের নিবন্ধে সেট আপ শংসাপত্রগুলি ব্যবহার করে লগ ইন করুন এবং একটি পোস্ট লিখতে শুরু করুন (যা আবার, পোস্টের ধরণের একটি অবজেক্ট তৈরি করবে এবং সম্পর্কিত ডেটা অন্তর্নিহিত ডাটাবেসে প্রবেশ করবে):

প্রক্রিয়াটি 2 বা 3 বার পুনরাবৃত্তি করুন:

আমরা বেশ কয়েকটি পোস্ট তৈরি করার পরে, আমাদের ওয়েব ব্রাউজার ব্যবহার করে সেগুলি প্রদর্শনের জন্য আমাদের কী করা উচিত তা দেখুন।

আমাদের প্রাথমিক দৃশ্য

আমাদের প্রথম দর্শন (my/myfirstdjangoenv/myfirstdjangoproject/myblog/વ્યু()) প্রকাশনার সময় অবতরণ করে অর্ডার করা হয়েছে যা "সর্বশেষ প্রথম" বলার মতো।

এই অবজেক্টগুলি সুবিধামত নামযুক্ত পোষ্টগুলিতে সংরক্ষণ করা হয় এবং এইচটিএমএলে এম্বেড করার জন্য (সমস্ত স্থান হিসাবে চিহ্নিত) ফেরত দেওয়া হয়, যেমন আমরা পরবর্তী বিভাগে দেখব:

from django.shortcuts import render
from .models import Post
from django.utils import timezone
def posts(request):
        posts = Post.objects.filter(whenPublished__lte=timezone.now()).order_by('-whenPublished')
        return render(request, 'myblog/posts.html', {'allposts': posts})

অবশেষে, উপরের যখন ডাবল আন্ডারস্কোরটি প্রকাশিত__ল্ট একটি ফিল্টার বা অপারেশন (lte = এর চেয়ে কম বা সমান) থেকে একটি ডাটাবেস ক্ষেত্র (যখন প্রকাশিত) আলাদা করতে ব্যবহৃত হয়।

একবার আমরা আমাদের প্রাথমিক দৃষ্টিভঙ্গি সংজ্ঞা দিলে, এর সাথে সম্পর্কিত টেম্পলেটটিতে কাজ করা যাক।

আমাদের প্রথম প্রকল্পের জন্য টেমপ্লেট তৈরি করুন

পূর্ববর্তী বিভাগে প্রদত্ত নির্দেশনা ও পথ অনুসরণ করে আমরা আমাদের প্রাথমিক টেমপ্লেটটি মাইব্লগ/টেম্পলেট/মাইব্লগের মধ্যে সংরক্ষণ করব। এর অর্থ আপনার একটি টেমপ্লেট নামের একটি ডিরেক্টরি তৈরি করতে হবে এবং মাইব্লগ নামে একটি উপ-ডিরেক্টরি তৈরি করতে হবে:

# cd ~/myfirstdjangoenv/myfirstdjangoproject/myblog
# mkdir -p templates/myblog

আমরা টেমপ্লেটটিকে পোষ্টের.html কল করব এবং এতে নীচের কোডটি সন্নিবেশ করব। আপনি লক্ষ্য করবেন যে আমরা jQuery, বুটস্ট্র্যাপ, ফন্টআউভিজ এবং গুগল ফন্টে অনলাইন রেফারেন্স যুক্ত করছি।

এছাড়াও, আমরা পাইথন কোডটি HTML এর ভিতরে কোঁকড়ানো বন্ধনীগুলির মধ্যে আবদ্ধ করেছি। দয়া করে নোট করুন যে পোস্টের প্রতিটি ধরণের জন্য আমরা এর শিরোনাম, এর প্রকাশিত তারিখ এবং লেখক এবং শেষ পর্যন্ত এর পাঠ্যটি প্রদর্শন করব। অবশেষে, লাল রঙে আপনি দেখতে পাবেন যে আমরা মাইব্লগ/ভিউ.পাইয়ের মাধ্যমে ফিরে আসা সামগ্রীর জন্য একটি রেফারেন্স তৈরি করব:

ঠিক আছে, এখানে পোস্টগুলি এইচটিএমএল ফাইল রয়েছে:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link href='https://fonts.googleapis.com/css?family=Indie+Flower' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Pacifico' rel='stylesheet' type='text/css'>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" type='text/css'">
<script src="https://code.jquery.com/jquery-2.1.4.min.js">
</script>
    <style>
      .title {
        font-family: 'Indie Flower', serif;
        font-size: 30px;
        color: #1E90FF;
      }
      h1 {
        font-family: 'Pacifico', serif;
        font-size: 45px;
        color: #1E90FF;
      }
    </style>
</head>
<body>
<div class="container"><h1>My blog</h1><br>
{% for post in allposts %}
    <div>
        <div class="title">{{ post.title }}</div>
        <strong>Published on {{ post.whenPublished }} by {{ post.author }}.</strong>
        <p>{{ post.text|linebreaks }}</p>
    </div>
{% endfor %}
</div>
</body>
</html>

উপরের টেমপ্লেটে লাইনব্রেক ফিল্টারটি এইচটিএমএল সমতুল্য (
বা

) প্রতিটি ফর্ম্যাট করতে লাইন ব্রেকগুলিকে প্রতিস্থাপন করতে ব্যবহৃত হয় অনুচ্ছেদ বিচ্ছেদ সঙ্গে সঠিকভাবে পোস্ট করুন।

এর পরে, আমাদের অ্যাপ্লিকেশনটিতে ইউআরএল এবং ডেটা ফেরত সম্পর্কিত মতামতগুলির মধ্যে একটি ম্যাপিং সেটআপ করা দরকার। এটি করতে, নিম্নলিখিত লিখিত সামগ্রী সহ মাইব্লগের ভিতরে urls.py নামে একটি ফাইল তৈরি করুন:

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.posts, name='posts'),
]

r ^$ আরও কিছুটা ব্যাখ্যা প্রাপ্য। নেতৃস্থানীয় r জ্যাঙ্গোকে একক উদ্ধৃতিতে স্ট্রিংকে একটি নিয়মিত ভাব হিসাবে বিবেচনা করার নির্দেশ দেয়।

বিশেষত, r ^$ একটি খালি স্ট্রিং উপস্থাপন করে যাতে আমরা যখন আমাদের ব্রাউজারকে http:// ip- ঠিকানা: 8000 (এবং অন্য কিছু না) দেখায় তখন ডেটা ফিরে আসে ভিউ.পি এর অভ্যন্তরে পরিবর্তনশীল পোস্টগুলি (পূর্ববর্তী বিভাগটি দেখুন) আমাদের হোম পেজে উপস্থাপন করা হবে:

সর্বশেষে, তবে অন্তত নয়, আমরা আমাদের মূল প্রকল্পের ~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject/urfi.py এর মধ্যে আমাদের ব্লগ অ্যাপ্লিকেশন (~/myfirstdjangoenv/myfirstdjangoproject/myblog/urls.py) এর url.py ফাইল অন্তর্ভুক্ত করব least .py):

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('myblog.urls')),
]

তারপরে ওয়েব সার্ভারটি শুরু করা যাক:

# cd ~/myfirstdjangoenv/myfirstdjangoproject
# python manage.py runserver 0.0.0.0:8000

আমাদের এখন আগের পোস্টগুলির তালিকা দেখতে সক্ষম হওয়া উচিত:

বুটস্ট্র্যাপের জন্য ধন্যবাদ, একটি ছোট ডিভাইসে আপনার এখনও একটি দুর্দান্ত ভিজ্যুয়ালাইজেশন থাকতে পারে:

সাতরে যাও

আসুন এখন আমরা এই নিবন্ধটি এবং এই সিরিজ জুড়ে যে ধারণাগুলি কভার করেছি সেগুলি পর্যালোচনা করি:

১. প্রতিটি মডেল একটি ডাটাবেস টেবিলের জন্য একটি অবজেক্ট এবং মানচিত্রকে সংজ্ঞায়িত করে, যার ক্ষেত্রগুলি সেই বস্তুর বৈশিষ্ট্যে পরিবর্তিত হয়। অন্যদিকে, একটি টেম্পলেট ব্যবহারকারী ইন্টারফেসটিকে সংজ্ঞায়িত করে যেখানে ভিউ দ্বারা ফিরিয়ে নেওয়া ডেটা প্রদর্শিত হবে।

ধরা যাক আমরা পোস্টের অবজেক্টে সারাংশ নামের একটি ক্ষেত্র যুক্ত করে আমাদের মডেলটি সংশোধন করতে চাই, যেখানে আমরা প্রতিটি পোস্টের alচ্ছিক সংক্ষিপ্ত বিবরণ সংরক্ষণ করব। মাইব্লগ/মডেলগুলিতে নিম্নলিখিত লাইনটি যুক্ত করা যাক:

summary = models.CharField(max_length=350, blank=True, null=True)

আমরা পূর্ববর্তী নিবন্ধে যেমন শিখেছি, আমাদের ডাটাবেসে পরিবর্তনগুলি স্থানান্তর করতে হবে:

# python manage.py makemigrations myblog
# python manage.py migrate myblog

তারপরে পোস্টগুলি সম্পাদনা করতে এবং প্রতিটি পোস্টে একটি সংক্ষিপ্ত সংক্ষিপ্ত যোগ করতে প্রশাসক ইন্টারফেসটি ব্যবহার করুন। শেষ অবধি, টেমপ্লেটে নিম্নলিখিত পোস্টগুলি প্রতিস্থাপন করুন (posts.html):

<p>{{ post.text|linebreaks }}</p>

সঙ্গে

<p>{{ post.summary }}</p>

পরিবর্তনগুলি দেখতে হোম পৃষ্ঠাটি রিফ্রেশ করুন:

২) একটি ভিউ ফাংশন একটি এইচটিটিপি অনুরোধ নেয় এবং একটি HTTP প্রতিক্রিয়া দেয়। এই নিবন্ধে, ভিউ.পি-এ ডিফ পোস্ট (অনুরোধ) সমস্ত পোস্ট পুনরুদ্ধার করতে অন্তর্নিহিত ডাটাবেসে কল করে। আমরা যদি শিরোনামে উত্তরীয় শব্দটি সহ সমস্ত পোস্ট পুনরুদ্ধার করতে চাই তবে আমাদের প্রতিস্থাপন করা উচিত।

posts = Post.objects.filter(whenPublished__lte=timezone.now()).order_by('-whenPublished')

সঙ্গে

posts = Post.objects.filter(title__icontains="ansible").order_by('-whenPublished')

ওয়েব অ্যাপ্লিকেশনগুলিতে অ্যাপ্লিকেশন যুক্তি থেকে ব্যবহারকারী ইন্টারফেসকে পৃথক করে, জাজানো অ্যাপগুলি বজায় রাখা এবং বাড়ানোর কাজগুলিকে সহজতর করে।

৩. আপনি যদি এই সিরিজে প্রদত্ত নির্দেশনাগুলি অনুসরণ করেন তবে আপনার প্রকল্পের কাঠামোটি নীচে হওয়া উচিত:

myfirstdjangoenv/myfirstdjangoproject
├── db.sqlite3
├── manage.py
├── myblog
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0001_initial.pyc
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── templates
│   │   └── myblog
│   │       └── posts.html
│   ├── tests.py
│   ├── urls.py
│   ├── urls.pyc
│   ├── views.py
│   └── views.pyc
└── myfirstdjangoproject
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

উপরের তালিকাটি আপনার ব্রাউজারে সঠিকভাবে প্রদর্শন না করে, নিম্নলিখিত কমান্ডের আউটপুটটির একটি স্ক্রিনশট এখানে রয়েছে:

# tree myfirstdjangoenv/myfirstdjangoproject

সারসংক্ষেপ

যদিও এই ধারণাগুলির মধ্যে প্রথমে কিছুটা ভয় দেখানোর মতো মনে হলেও, আমি আপনাকে নিশ্চিত করে দিতে পারি যে জাঙ্গো এর সাথে পরিচিত হওয়ার জন্য প্রয়োজনীয় সমস্ত প্রচেষ্টা সার্থক

আমি আশা করি যে এই সিরিজটিতে আমরা আপনাকে এই অসামান্য ওয়েব কাঠামোর সাথে পরিচয় করানোর জন্য যে উদাহরণ ব্যবহার করেছি তা আপনাকে আরও শিখতে উদ্বুদ্ধ করবে। যদি তা হয় তবে অফিশিয়াল জ্যাঙ্গো ডকুমেন্টেশন (যা নিয়মিত আপডেট রাখা হয়) শুরু করার সেরা জায়গা।

আমি আপনাকে আশ্বস্ত করতে পারি যে জ্যাঙ্গোতে আরও অনেক কিছু রয়েছে যা আমরা যথাযথভাবে ধারাবাহিক নিবন্ধে কভার করতে পারি, তাই নির্দ্বিধায় এটি অন্বেষণ করুন এবং করে শিখুন!

নীচের ফর্মটি ব্যবহার করে আমাদের প্রশ্ন বা পরামর্শ সহ একটি নোট ফেলে দিন Fe