آموزش جانگو - قسمت دوم: پیاده‌سازی سرور

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 12 مرداد 1397
دسته بندی ها : پایتون

در قسمت اول، ما نگاهی به این موضوع که جانگو انتخاب مناسبی برای توسعه وب است انداختیم. حال، ما قصد داریم که از آن استفاده کنیم و با استفاده از آن یک اپلیکیشن ساده را ایجاد کنیم. این آموزش تنها یک کلیات از ماجرا و شیوه کاری جانگو را به شما معرفی می‌کند. بنابراین قصد نداریم که قطعه قطعه تمام جزئیات را به شما آموزش دهیم. اگر قصد داشتید که اطلاعات بیشتری در این باره پیدا کنید، می‌توانید جستجوهایی را در اینترنت دنبال کنید. 

ایجاد اولین وبسایت جانگو

در این آموزش قصد داریم یک اپلیکیشن ساده برای لیست To-Do را ایجاد کنیم. این موضوع به شما شیوه کاری جانگو را به خوبی آموزش می‌دهد.

در این آموزش ما از لینوکس اوبونتو استفاده می‌کنیم، پس نیاز است که از محیط Bash استفاده کنید. در ویندوز می‌توانید از برنامه ‌Bash استفاده کنید. 

ابتدای کار بیایید جانگو را نصب کنیم. راحت‌ترین راه برای اینکار استفاده از pip است. برای این کار دستور زیر را وارد کنید:

sudo pip install django

برای اینکه ببینید فرایند نصب با درستی دنبال شده است می‌توانید با استفاده از دستور زیر تاییدیه‌تان را دریافت کنید. این دستور نسخه جانگویی که نصب کردید را به شما برمی‌گرداند.

django-admin --version

اگر قصد دارید که روی پروژه‌های مختلف پایتون کار کنید، باید virtualenv را روی دستگاه خود داشته باشید. این ابزار یک محیط مجازی ایزوله شده برای هر پروژه پایتون را به شما ارائه می‌دهد. با این حال در این آموزش استفاده کردن از چنین موردی ضروری نیست.

حال که جانگو نصب شده نیاز است که یک دایرکتوری جدید برای اپلیکیشنی که قصد ساخت آن را داریم ایجاد کنیم.

mkdir apps

تصمیم گرفتم که نام دایرکتوری را apps بنامم. اما شما می‌توانید هر نام دیگری را روی آن بگذارید. حال وارد دایرکتوری apps شوید:

cd apps

برای ایجاد اپلیکیشنی که قصد ساخت آن را داریم باید ابتدا دستور زیر را وارد کنیم:

django-admin startproject todolist

نام اپلیکیشن را todolist گذاشتم، اما باز هم شما برای انتخاب نام آزاد هستید. بعد از اینکار وارد پروژه شوید:

cd todolist

برای اینکه ببینید چه فایل‌هایی در این دایرکتوری موجود است می‌توانید از دستور ls استفاده کنید. با این کار باید موارد زیر را مشاهده کنید:

manage.py todolist

حال که می‌دانیم چه چیزهایی در دایرکتوری todolist قرار دارد می‌توانیم آن را در یک تکست ادیتور به عنوان یک پروژه جدید باز کنیم. من از Atom استفاده می‌کنم اما شما می‌توانید موارد دیگری را نیز انتخاب نمایید.

وقتی که ادیتور را باز کردید باید فایل manage.py را همراه با یک پوشه دیگر todolist مشاهده کنید. وقتی که روی پوشه کلیک کردید، می‌توانید فایل‌های بیشتری را نیز مشاهده کنید. خودتان را با این موضوع که در این مرحله این فایل‌ها چه کاری را انجام می‌دهند نگران نسازید، در حال حاضر دانستن آن‌ها ضروری نیست، فقط مطمئن شوید که مواردی باید وجود داشته باشد.

حال که ما این کارها را انجام دادیم، می‌توانیم اپلیکیشن مورد نظرمان را ایجاد کنیم. با وجود آنکه جانگو به این موارد به عنوان اپلیکیشن نگاه می‌کند، اما بیشتر شبیه به ماژول‌ها هستند. به ادامه ساخت اپلیکیشن todolist برمی‌گردیم. برای اینکار وارد ترمینال شده و دستور زیر را اجرا کنید:

python manage.py startapp todos

حال وقتی به تکست ادیتور برگردید، با یک پوشه جدید مواجه خواهید بود. یک پوشه جدید با نام اپلیکیشن ایجاد شده که در آن فایل‌های جدیدی وجود دارد.

کار بعدی که باید انجام شود، اجرا کردن سرور است. می‌توانیم این کار را با وارد شدن به ترمینال و اجرای دستور زیر انجام دهیم:

python manage.py runserver

در صورت اجرای این دستور، به پیغام زیر برخورد می‌کنید:

You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.

Run 'python manage.py migrate' to apply them.

You can ignore this for now. The important thing we want to see is this.

June 05, 2018 - 15:49:34

Django version 2.0.5, using settings 'todolist.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL+C.

این مورد به شما می‌گوید که سرور در آدرس http://127.0.0.1:8000/ در حال اجرا شدن است. برای خارج شدن می‌توانید Ctrl+C را بزنید. حال مرورگر را باز کرده و آدرس صفحه‌ای که گفته شد را باز کنید:

این تصویر به ما می‌گوید که سرور ما به درستی و موفقیت اجرا شده است و کار می‌کند. حال که همه موارد مقدماتی به درستی پیاده‌سازی شده است می‌توانیم روی اپلیکیشن To-Do کار کنیم.

حال در فاز جدیدی از اجرای پروژه، در تکست ادیتور فایلی با نام urls.py را باز کنید. این فایل برای مسیریابی استفاده می‌شود و از عبارات باقاعده نیز بهره می‌گیرد. قسمتی از کدها به صورت زیر خواهند بود:

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

این کد برای قسمت ادمین استفاده می‌شود. این قطعه کد تمام مسیرهایی که با admin شروع می‌شود را در بر می‌گیرد. چیزی که ما نیاز داریم این است که مسیر todos را مشخص کنیم. تنها کاری که باید انجام دهیم این است که خط نوشته شده را کپی و با باری دیگر جایگذاری کنیم، بعد از آن کافی‌ست admin را به todos تغییر دهیم. 

urlpatterns = [
    path(r'^todos/', admin.site.urls),
    path(r'^admin/', admin.site.urls),
]

حال همه چیزها به todos منتقل می‌شود. بعد از اینکار قصد داریم که به فایل todos urls.py منتقل شویم. برای انجام چنین کاری کافی‌ست admin.site.urls را به include(todos.urls) تغییر دهید.

urlpatterns = [
    re_path(r'^todos/', include(‘todos.urls’)),
    re_path(r'^admin/', admin.site.urls),
]

در بالای این کدها، می‌توانید دو دستور import را مشاهده کنید:

from django.contrib import admin
from django.urls import url

نیاز است که include و re_path را نیز از طریق django.urls به پروژه منتقل کنیم:

from django.urls import include, re_path

حال وارد پوشه پروژه شده و یک فایل urls را ایجاد کنید. urls.py را فراخوانی نمایید. بعد از آن در داخل فایل ابتدا باید پکیج re_path را import کنیم. 

from django.urls import re_path

همچنین فایل views.py را نیز باید import کنیم.

from . import views

علامت . به ما می‌گوید که این فایل در همین دایرکتوری قرار دارد. بعد، نیاز است که کد urlpatterns را از فایل urls اضافه کنیم. 

urlpatterns = [
    re_path('todos/', include(‘todos.urls’)),
]

حال نیاز است  مسیری که قرار دادیم را تغییر دهیم. برای اینکار کدها را به صورت زیر تغییر دهید:

urlpatterns = [
    re_path('^$', views.index, name='index'),
]

قسمت مربوط به ^$ به معنای «شروع با» و «پایان با» است. هرچیزی که بین ^ و $ قرار دهیم، وارد روند توسعه می‌شود. در این قسمت تنها ریشه دایرکتوری todos مورد توجه ما است بنابراین نیازی نیست که چیزی را در آن قرار دهیم.

در قسمت بعدی، ما می‌خواهیم این قسمت را به views و بعد به index منتقل کنیم. بنابراین، این قسمت به دنبال یک تابع در فایل views می‌گردد که index نام دارد. 

کار بعدی که قرار است انجام دهیم این است که وارد views.py شده و یک تابع جدید پایتون به نام index ایجاد کنیم. این تابع یک پارامتر با نام request را دریافت می‌کند. هر request اطلاعاتی مانند ارسال‌ها، داده‌ها، آی‌پی‌ آدرس‌های کاربران و... را در خود دارد. تمام این اطلاعات بخشی از شئ request خواهند بود. برای ساخت این تابع وارد تکست ادیتور شده و فایل views.py را اجرا کنید:

def index (request):

حال نیاز داریم که زمان بارگذاری index یک تصمیمی بگیریم. چیزی که ما می‌خواهیم برگشت داده شود یک HttpResponse است. برای حال تنها کافی‌ست یکسری متن ارسال کنیم. تابع را با خطوط زیر تکمیل کنید:

def index (request):
    return HttpResponse(‘Hello World’)

برای استفاده از HTTP Response نیاز است که آن را import کنیم. در ابتدای فایل، باید یک دستور import به صورت زیر وارد نمایید:

from django.http import HttpResponse

حال باید رشته "Hello World" را در localhost:8000/todos مشاهده کنید. همچنین قصد داریم که home page به دایرکتوری todos برگشت داده شود. برای انجام چنین کاری نیاز است که به todolist برگشته و بعد به سراغ فایل urls.py برویم. قسمت‌هایی از کد که قبلا ویرایش کردیم را پیدا کنید و بعد خطوط زیر را بجای آن قرار دهید:

 urlpatterns = [

    re_path(r'^$', include(‘todos.urls’)),

    re_path(r'^todos/', include(‘todos.urls’)),

    re_path(r'^admin/', admin.site.urls),

]

todos را با $ تغییر دهید. این کار باعث می‌شود که با روت پروژه منطبق شود. استفاده از include(‘todos.urls’) به این معناست که همه چیز به todos برگشت داده می‌شود. حال زمانی که بخواهیم وارد localhost:8000 شویم، باز هم با "Hello World" مواجه خواهیم بود. 

قسمت بعدی

کارهایی که ما در این قسمت انجام دادیم همگی به مسیریابی و routing مربوط می‌شود. در مطلب بعدی ما یک بانک اطلاعاتی را با استفاده از MySQL ایجاد می‌کنیم. همچنین قسمت بک‌اند را نیز برای اپلیکیشن به پایان می‌رسانیم. بعد از اینکه این کار انجام شد، ما با یک صفحه admin مواجه خواهیم شد که به ما اجازه می‌دهد لیست To-Do داشته باشیم.

منبع

مقالات پیشنهادی

آموزش جانگو - قسمت اول : جانگو چیست؟

وقتی که شروع به فرایند توسعه وب می‌کنید، ممکن است انتخاب مسیر از ابتدای کار کمی سخت باشد و شما در این روند سردرگم شوید. همانطور که وب پیشرفت کرد و تغی...

آموزش جانگو - قسمت سوم: ایجاد بانک‌ اطلاعاتی

در این مقاله ما روش پیاده‌سازی یک بانک‌ اطلاعاتی و پنل مدیریت را برای وبسایت جانگو خودمان یاد خواهیم گرفت. این قسمت به احتمال بسیار زیاد، پیچیده‌ترین...

آموزش جانگو - قسمت چهارم: ایجاد فرانت-اند

حال که قسمت بک‌-اند ما به صورتی درست کار می‌کند، می‌توانیم به فرانت-اند وبسایت بپردازیم. در حال حاضر آدرس Localhost:8000/todos به ما چیزی جز یک متن سا...

آموزش جانگو - قسمت پنجم : تکمیل اپلیکیشن

تا به اینجای کار ما هیچ توجهی به کاربر اپلیکیشن نکردیم. در حقیقت کاربران این اپلیکیشن نمی‌توانند به صورت مستقیم از آن استفاده کنند. ما اپلیکیشن را با...