مقدمات ساخت پروژه جنگو
در ادامه ی آموزش جلسه قبل، از این جلسه میخوایم مباحث عملیاتی تر پروژه وبلاگ جنگو رو شروع کنیم. به همین خاطر مقدمات ساخت پروژه جنگو رو با هم میبینم.
شروع اولین پروژه جنگو
همونطور که گفتیم پروژه ای که قراره تو این آموزش بسازیم یه وبلاگ جنگو هستش. پس میریم که با هم ببینیم از کجا و چطوری باید کارمون رو شروع کنیم.
اول از همه توسط آموزش نصب و فعالسازی محیط مجازی برای ساخت پروژه جنگو اقدام میکنیم.
جنگو یه دستور داره که برای ما یه پروژه اولیه با فایل های پیشفرض جنگو میسازه. دستور ساخت پروژه ی جنگو بصورت زیر هستش:
Django-admin startproject mysite
با استفاده از این دستور که وارد کردیم، یه پروژه جنگو به اسم mysite برامون ساخته میشه.
نکته: از عبارت های built-in موجود در پایتون و یا جنگو استفاده نکنید تا یه زمان قاطی نکنه!
ساختار پروژه ساخته شده بصورت زیر خواهد بود:
mysite/ manage.py mysite/ __init__.py asgi.py wsgi.py settings.py urls.py
حالا این فایلها چی هستن هر کدوم؟
- py: دستوراتی که میخوایم تو پروژه مون اجرا بشه رو توسط متدهای موجود در این فایل هستش که میتونیم بنویسیم. نیازی به دستکاری این فایل ندارید.
- Mysite/: این فولدر پایه ی پروژه مون هستش که شامل فایل های زیر میشه:
- py: یه فایل خالیه که به پایتون میگه با این فولدر، مثل یه ماژول پایتون رفتار کن (ینی باعث میشه که این فولدر به عنوان یه پکیج پایتون شناخته بشه)
- py: تنظیمات مربوطه به اجرای پروژه ما به عنوان ASGI و برای استاندارد و آسینکرون بودن اپلیکیشن های پایتونمون با وب سرور هستش. (باهاش کاری نداشته باشین)
- py: تنظیمات پروژه مون از اینجا قابل تغییر خواهند بود و یه سری کارها رو از اینجا انجام میدیم.
- py: این فایل، محل نگهداریه همه الگوهای url مون هستش که پیادهسازی میکنیم. هر url به یه view مپ میشه(که بعداً میبینیم)
- py: این فایل تنظیمات پروژه مون به عنوان یک اپلیکیشن Web Server Gateway Interface هستش. (باهاش کاری نداشته باشین)
فایل setting.py که داریم، شامل تنظیمات پروژه از جمله تنظیمات اتصال به دیتابیس، شناساندن اپلیکیشن هایی که میسازیم به فریمورک جنگو، محل قرار گرفتن فایل های استاتیک، و خیلی موارد دیگه هستش که بعداً به مرور با همدیگه خواهیم دید.
هر اپلیکیشن جنگو، یه فایل models.py داره که توی این فایل مدل های داده(یا همون data modelها) مون تعریف میشن. هر کدوم از data model ها هم متناظر یه جدول توی دیتابیس هستن(به عنوان یه جدول توی دیتابیس ساخته میشن).
برای اپلیکیشن هایی که توی قسمت INSTALLED_APPS موجود تو فایل settings.py قرار دارن، باید یه جدول توی دیتابیس ساخته بشه که این کار رو خود جنگو با یه دستور مدیریت میکنه:
اگر از shell استفاده میکنین(مثلاً cmd) دستور زیر رو بزنین:
Cd mysite Python manage.py migrate
و اگه توی IDE هستین(مثلاً PyCharm) توی ترمینال، دستور زیر رو وارد کنین:
Python manage.py migrate
نکته: توجه کنید که حتماً محیط مجازی رو فعال کرده باشین و همینطور در پوشه اصلی mysite باشید(یعنی باید جایی باشید که فایل manage.py توش هستش)
بعد از اینتر کردن، خروجی ای مشابه زیر میبینید:
Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK
این خطوط نشون دهنده اینه که عملیات migration روی دیتابیس انجام شد.
حالا migration توی جنگو ینی چی؟ migration ها فایلهایی هستن که تنظیماتی که برای جدول مورد نظرمون توی دیتابیس انجام بدیم توش نگهداری میشه و هر زمان که بخوایم میتونیم توی دیتابیس ذخیره شون کنیم.
راه اندازی سرور جنگو
برای اینکه در فاز development پروژه جنگو، بتونیم اپلیکیشن های مختلفی که ساختیم رو ببینیم و باهاشون کار کنیمف باید برای پروژه مون یه سرور لوکال توی سیستم خودمون راه اندازی کنیم
تو محیط برنامه نویسی جنگو، بدون اینکه نیاز باشه که کار خاصی انجام بدیم و بریم یه وب سرور تنظیم کنیم و از اینجور کارا، به راحتی میتونیم از سروری که خود جنگو برامون اجرا میکنه استفاده کنیم. از جمله قابلیت های خوبی که این سرور داره اینه که به محض اینکه تغییری توی کدهامون اعمال کنیم، اتوماتیک مجدد سرور رو لود میکنه و نیازی نیست که هر بار که تغییری توی کدها اعمال کردیم، بیایم یه دور سرور رو متوقف و دوباره اجرا بکنیم.(البته بعضی مواقع نیاز هستش که بیایم سرور رو متوقف و استارت مجدد کنیم، مثلاً وقتایی که فایل جدیدی رو وارد پروژه کردیم)
خب برای ران کردن سرور جنگو دستور زیر رو مینویسیم:
python manage.py runserver
خروجی مثل زیر خواهد بود:
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). January 01, 2020 - 10:00:00 Django version 3.0, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
حالا یه پنجره توی مرورگر وب باز کنین و آدرس https://127.0.0.1:8000 رو روارد کنین. اگه همه چی درست انجام شده باشه، تصویری مثل زیر میبینید:
تبریک!!! با موفقیت سرور رو اجرا کردین 😊
حالا اگه به قسمت ترمینال کنسول برنامه نویسی تون نگاه کنید، همچین چیزی میبینید:
[01/Mar/2021 17:20:30] "GET / HTTP/1.1" 200 16351
هر تقاضای HTTP (یا همون HTTP request) که به سرور زده بشه، توی این کنسول برامون نمایش داده میشه. هر زمان اگر اروری هم بخوریم همینجا در لحظه بهمون نمایش میده.
فقط به خاطر داسته باشین که این سرور که الان در حال استفاده ازش هستیم به منظور توسعه اپ هامون هستش و مناسب استفاده تو محیط production(منظورمون زمان پیادهسازی روی هاست اصلی) نیست. برای اینکه پروژه جنگو رو توی محیط production مستقر کنیم، باید اون رو به عنوان یه اپلیکیشن WSGI، روی یه وب سرور مثل آپاچی، Gunicorn، Nginx یا … ران کنیم.(بعداً بهش میپردازیم)
تمام!! 🙂
ماموریت با موفقیت به اتمام رسید.
نکته 1: به آدرس هایی که توی Command line وارد میکنین دقت کنید.
نکته 2: دستور python manage.py runserver رو حتماً باید در فولدر اپلیکیشنی که ساختیم(حالا بعداً راجع به اینکه اپلیکیشن توی جنگو چیه هم صحبت میکنیم) اجرا کنیم وگرنه خطا میخوریم.
فایل تنظیمات پروژه
خب الان میخوایم یه مقدار با تنظیمات پروژه آشنا بشیم. فایل settings.py رو باز کنین و یه نگاهی به تنظیماتی که اونجا هستش بکنیم. خیلی چیزای مختلفی تو این فایل وجود داره که در حال حاضر کاری باهاشون نداریم. لیست کامل تنظیمات و مقادیر پیش فرضشون رو میتونین از اینجا ببینین:
https://docs.djangoproject.com/en/3.0/ref/settings/
فقط برای آشنایی اولیه، در اینجا موارد زیر رو مطرح میکنیم:
- DEBUG: یه مقدار بولین هستش که حالت debug رو فعال یا غیر فعال میکنه. اگه True باشه، وقتی یکی جنگو تو اجرای یک قسمت از برنامه به مشکل بخوره، توی مرورگرمون ارور رو با توضیحات مختلف نشون میده. نکته ای که باید بهش دقت کنین اینه که توی سرور اصلی سایتتون، حتماً حتماً این گزینه رو False بذارید.
- ALLOWED_HOSTS: اگه که DEBUG فعال باشه، این مورد اعمال نمیشه. وقتی که سایتتون رو به سرور اصلی بردین و DEBUG رو False گذاشتین، اونوقت باید domain/host رو به این قسمت اضافه کنین تا جنگو بتونه سایتتون رو اجرا کنه.
- INSTALLED_APPS: این گزینه، تنظیمی هستش که همیشه باهاش کار داریم. وقتی که یه اپلیکیشن میسازیم، باید از طریق وارد کردن اسم اون اپلیکیشن توی این قسمت، به جنگو بگیم که این اپلیکیشن فعال هستش و میخوایم باهاش کار کنیم. مقادیر پیشفرض هم داره که هر کدوم یه استفاده ای دارن که در حال حاضر باهاشون کاری نداریم.
- MIDDLEWARE: لیستی که شامل middleware هایی که میخوایم اجرا بشن هستش (فعلاً باهاش کاری نداریم).
- ROOT_URLCONF: محل قرارگیری فایل URL اصلی ما هستش.
- TEMPLATES: تنظیمات مربوط به قالب های گرافیکی(HTML) سایت ما در اینجا قرار میگیرد.
- DATABASE: دیکشنری تنظیمات دیتابیس مورد استفاده توسط پروژه جنگو ما تو این قسمت قرار میگیره. فریمورک جنگو بصورت پیشفرض از دیتابیس SQLite استفاده میکنه.
- LANGUAGE_CODE: کد زبان پیشفرض سایت جنگو ما از این قسمت مشخص میشود.
فعلاً به همین موارد بسنده میکنیم. اگه چیزهایی رو اینجا دیدین که متوجه نشدین که چی هستش، اصلاً جای نگرانی نیست. به مرور که آموزش ها رو دنبال کنین و پروژه های مختلف بسازید، خودتون کامل راه میفتین و یاد میگیرین.
پروژه و اپلیکیشن های مورد نیاز
توی آموزشی که داریم با هم دنبال میکنیم، به دفعات، واژه های پروژه و اپلیکیشن رو عنوان میکنیم. به همین خاطر همینجا راجع بهش یه صحبت کلی بکنیم تا بدونیم چی به چی هستش:
تو جنگو:
- پروژه به یه نسخه نصب شده از جنگو گفته میشه که یه سری تنظیمات مختلف پیشفرض داره.
حالا اپلیکیشن جنگو چیه؟
- اپلیکیشن جنگو به گروهی از مدلها، viewها، templateها، و در نهایت URL ها گفته میشه. اپلیکیشن ها با فریمورک جنگو تعامل میکنن تا بتونن یه سری کارهای خاصی رو که میخوایم برامون انجام بدن، و همینطور بشه ازشون مجدداً در جایی که نیاز داشتیم استفاده کنیم.
فکر میکنم با دیدن تصویر زیر براتون این موضوع قشنگ جا بیفته:
تو این مطلب ساخت اولین پروژه جنگومون رو شروع کردیم. گفتیم چطور سرور جنگو رو باید راه بندازیم و اینکه فایل تنظیمات جنگو بطور مختصر چه مواردی رو شامل میشه. در نهایت هم با تفاوت پروژه و اپلیکیشن توی جنگو آشنا شدیم.
در قسمت بعدی اولین اپلیکیشن جنگوی خودمون رو مینویسیم.
تو آموزش های بعدی مرکز تخصصی آموزش جنگو، کلی مباحث مختلف و خوب داریم که بتونید هرچی بیشتر با مباحث فریمورک قدرتمند جنگو آشنا بشید و یادشون بگیرید.
سوالات و نظراتتون رو هم حتماً حتماً با ما در میون بذارید.
دیدگاهتان را بنویسید