
راهنمای کامل جنگو برای مبتدیان – قسمت 1
راهنمای کامل جنگو برای مبتدیان – قسمت 1
از امروز یک سری آموزش در مورد اصول جنگو شروع می کنم. این سری مقالات از سطح کاملا مبتدی شروع می کنم. قصد دارم تمام مفاهیم اساسی را با جزئیات کامل بررسی کنم ، از نصب و آماده سازی محیط توسعه ، مدل ها (models) ، نماها (views)، قالب ها (templates)، URL ها تا موضوعات پیشرفته تر مانند مهاجرت (migrate) ، آزمایش (test) و استقرار (deployment).
قبل از شروع دوره یک نقل قول کوتاه از کنفوسیوس و لازم میدانم که بگویم:
I hear and forget I see and I remember I do and I understand
می شنوم و فراموش می کنم می بینم و به یاد می آورم، انجام می دهم و می فهمم
پس، فقط آموزش ها را نخوانید! با انجام و تمرین بسیار بیشتر خواهید آموخت.
چرا جنگو؟
جنگو یک چارچوب وب (Web framework) است که به زبان پایتون نوشته شده. چارچوب وب نرم افزاری است که از توسعه وب سایت ها ، برنامه ها و خدمات پویا پشتیبانی می کند. این مجموعه، مجموعه ای از ابزارها و عملکردها را ارائه می دهد که بسیاری از مشکلات رایج مرتبط با توسعه وب را حل می کند، مانند ویژگی های امنیتی، دسترسی به پایگاه داده ، نشست ها (sessions) ، پردازش قالب ، مسیریابی URL ، بین المللی سازی (internationalization)، محلی سازی (localization) و موارد دیگر.
استفاده از چارچوب وب ، مانند جنگو ، به ما این امکان را می دهد که برنامه های وب امن و قابل اطمینان را خیلی سریع و به صورت استاندارد بدون نیاز به اختراع مجدد چرخ توسعه دهیم.
جنگو چه ویژگی خاصی دارد؟ برای شروع ، این یک چارچوب وب پایتون است ، به این معنی که می توانید از طیف وسیعی از کتابخانه های منبع باز در آن استفاده کنید. مخزن بسته پایتون بیش از 116 هزار بسته را میزبانی می کند (طبق 6 سپتامبر 2017). اگر شما نیاز به حل یک مشکل خاص دارید ، به احتمال زیاد کسی قبلاً یک کتابخانه برای آن پیاده کرده است.
جنگو یکی از محبوب ترین چارچوب های وب است که به زبان پایتون نوشته شده است. که قطعاً کاملترین هم هست و طیف گسترده ای از ویژگی ها را ارائه می دهد ، مانند وب سرور مستقل برای توسعه و آزمایش ، caching ، سیستم واسطه (middleware system) ، ORM ، موتور قالب (template engine) ، پردازش فرم ، رابط با ابزارهای تست واحد پایتون و برنامه های کاربردی داخلی مانند سیستم احراز هویت ، رابط مدیریتی با صفحات تولید شده به صورت خودکار برای عملیات CRUD ، ایجاد فیدهای سندیکا (RSS/Atom) ، نقشه های سایت را ارائه می دهد. حتی یک چارچوب سیستم اطلاعات جغرافیایی (GIS) در جنگو ساخته هم در دسترس می باشد.
اگر با اصطلاحات نام برده آشنایی ندارید نگران نباشید بزودی به همه آن ها آشنا می شوید
توسعه Django توسط بنیاد نرم افزاری Django پشتیبانی و همچنین توسط شرکت هایی مانند JetBrains و Instagram پشتیبانی می شود.این برنامه بیش از 12 سال است که در حال توسعه است و ثابت می کند که یک چارچوب وب بالغ ، قابل اعتماد و امن است.
چه کسانی از جنگو استفاده می کند؟
بد نیست بدانید چه کسانی از جنگو استفاده می کنند در میان بزرگترین وب سایت هایی که از Django استفاده می کنند ، می توانیم : Instagram ، Disqus ، Mozilla ، Last.fm ، National Geographic ، Youtube ، Google ، Udemy و… را نام ببریم.
به هر حال ، سال گذشته ، در کنفرانس Django Under The Hood 2016 ، کارل مایر ، توسعه دهنده اصلی جنگو و کارمند اینستاگرام ، در مورد نحوه استفاده اینستاگرام از Django در مقیاس و نحوه حمایت از رشد آنها سخنرانی کرد. این جلسه یک ساعته است ، اما اگر علاقه مند هستید سری به این لینک بزنید.
نصب و راه اندازی
اولین قدم این است که برخی از برنامه ها را بر روی دستگاه خود نصب کنیم تا بتوانیم کار با جنگو را شروع کنیم. راه اندازی اصلی شامل نصب Python ، Virtualenv و Django است.

استفاده از محیط های مجازی اجباری نیست ، اما بسیار توصیه می شود مخصوصا اگر تازه کار هستید.
هنگام توسعه وب سایت ها یا پروژه های وب با جنگو ، بسیار معمول است که مجبور به نصب کتابخانه های خارجی برای توسعه بهتر باشید. با استفاده از محیط های مجازی ، هر پروژه ای که توسعه می دهید محیط جداگانه خود را خواهد داشت. بنابراین وابستگی ها یا کتابخانه های متفاوت با هم در تضاد قرار نمی گیرند. همچنین به شما این امکان را می دهد پروژه های خود را که در نسخه های مختلف جنگو اجرا می شوند ، حفظ کنید.
استفاده از محیط های مجازی بسیار ساده است ، خواهید دید!
نصب پایتون
اولین کاری که می خواهیم انجام دهیم نصب پایتون(آخرین توزیع) است.از نصب پایتون 3 استفاده کنیم بهتر است زیرا مهم ترین کتابخانه های پایتون قبلاً به پایتون 3 منتقل شده اند.
به سایت پایتون بروید و روی صفحه بارگیری Python 3.9.7 کلیک کنید تا نصب پایتون را شروع کنیم

به فهرست دانلودهای خود بروید ، روی بسته نصبی راست کلیک کرده و روی Run as administrator کلیک کنید.

پس از اتمام نصب پایتون ، باید صفحه زیر را مشاهده کنید:

حالا برنامه Command Prompt را جستجو کرده و آن را باز کنید:

برای اطمینان از اینکه آیا همه چیز خوب کار می کند ، دستور زیر را تایپ کنید:
python --version
به عنوان خروجی باید شبیه تصویر زیر را ببینید:

که در آن نسخه پایتونی رو که نصب کردید نمایش می دهد.حالا نصب پایتون تمام شده و مرحله بعدی محیط های مجازی یعنی نصب virtualenv است!
نصب Virtualenv
بعد از نصب پایتون برای نصب Virtualenv باید از pip ، ابزاری برای مدیریت و نصب بسته های Python ، برای نصب virtualenv استفاده کنیم. پس در خط فرمان ، دستور زیر را اجرا کنید:
pip install virtualenv

تا اینجا نصب هایی که ما انجام دادیم در کل سیستم بود. از این به بعد، هر چیزی که ما نصب می کنیم ، از جمله خود جنگو ، در یک محیط مجازی نصب می شود.
اینطور فکر کنید: برای هر پروژه جنگو که شروع می کنید ، ابتدا یک محیط مجازی برای آن ایجاد می کنید. که شبیه داشتن یک جعبه برای هر پروژه جنگو است. بعد از آن می توانید بسته ها را نصب کنید و بسته ها را بدون خراب کردن چیزی حذف کنید.
من دوست دارم پوشه ای به نام Development در رایانه شخصیم ایجاد کنم. و بعد برای سازماندهی همه پروژه ها و وب سایت های خود استفاده کنم. اما می توانید مراحل بعدی را در ایجاد دایرکتوری ها در هر کجا که برای شما مناسب است ادامه دهید.
معمولا ، من با ایجاد یک پوشه جدید با نام پروژه در داخل پوشه توسعه خود شروع می کنم پوشه را به نام myproject می سازم.
mkdir myproject cd myproject

در این پوشه همه فایل ها و موارد مربوط به پروژه جنگو ما ، از جمله محیط مجازی مربوط ذخیره می شود.
داخل پوشه myproject دستور زیر را اجرا کنید:
virtualenv venv

الان نصب Virtualenv تمام شده فقط قبل از شروع استفاده از آن ، باید محیط را فعال کنیم پس دستور زیر را وارد کنید:
venv\Scripts\activate
اگر (venv) را در کنار خط فرمان مشاهده کنید یعنی همه چی درست انجام شده:

برای درک بهتر، ما یک پوشه خاص به نام venv ایجاد کردیم که حاوی یک کپی از Python در داخل این پوشه است. پس از فعال کردن محیط venv ، هنگام اجرای دستور python
، از نسخه محلی ما که در venv ذخیره شده، به جای نسخه دیگری که قبلاً نصب کرده ایم ، استفاده می کند.
نکته مهم دیگر اینکه برنامه pip نیز قبلاً نصب شده است و وقتی از آن برای نصب بسته های Python استفاده می کنیم ، مانند نصب Django ، در محیط venv.
نصب Django
حالا که venv را فعال کردیم ، دستور زیر را برای نصب Django اجرا کنید:
pip install django

الان همه چیز آماده است و نصب Django به اتمام رسیده!
شروع پروژه جدید
بعد از اتمام نصب Django برای شروع پروژه جدید جنگو ، دستور زیر را اجرا کنید:
django-admin startproject myproject
ابزار خط فرمان django-admin به طور خودکار با جنگو نصب می شود. بعد از اجرای دستور بالا ، ساختار پوشه اصلی را برای پروژه جنگو ایجاد می کند.در حال حاضر ، دایرکتوری myproject ما به این شکل است:
myproject/ <-- بالاترین پوشه ما |-- myproject/ <-- پوشه پروژه جنگوی ما | |-- myproject/ | | |-- __init__.py | | |-- settings.py | | |-- urls.py | | |-- wsgi.py | +-- manage.py +-- venv/ <-- پوشه محیط مجازی ما
ساختار پروژه اولیه ما از پنج فایل تشکیل شده است:
- manage.py: یک میانبر برای استفاده از ابزار خط فرمان django-admin که برای اجرای دستورات مدیریت مربوط به پروژه ما استفاده می شود.ما از آن برای اجرای سرور توسعه ، اجرای آزمایش ، ایجاد مهاجرت های دیتابیس و موارد دیگر استفاده خواهیم کرد.
- init__.py__: این فایل خالی به پایتون می گوید که این پوشه یک بسته پایتون است.
- settings.py: این فایل شامل تمام پیکربندی پروژه است. ما همیشه به این پرونده مراجعه می کنیم!
- urls.py: این فایل مسئول نگهداری مسیرهای پروژه ما است. به عنوان مثال ، اگر می خواهید چیزی را در URL /about /نشان دهید ، ابتدا باید آن را اینجا مشخص کنید.
- wsgi.py: این فایل یک رابط ساده است که برای استقرار (deployment) استفاده می شود. لازم نیست در مورد آن زحمت بکشید فقط بگذار باشد.
جنگو با یک وب سرور ساده همراه نصب شده است.بنابراین نیازی به نصب هیچ چیز دیگری برای اجرای پروژه به صورت محلی نداریم. می توانیم با اجرای دستور آزمایش کنیم:
python manage.py runserver
حالا آدرس اینترنتی زیر را در مرورگر وب باز کنید: http://127.0.0.1:8000 باید صفحه زیر را مشاهده کنید:

برنامه های جنگو
در فلسفه جنگو ما دو مفهوم مهم داریم:
- app: یک برنامه وب است که کاری انجام می دهد. یک برنامه معمولاً از مجموعه ای از مدل ها (جداول پایگاه داده) ، نماها ، قالب ها ، آزمایش ها تشکیل شده است.
- project: مجموعه ای از تنظیمات و برنامه ها است. یک پروژه می تواند شامل چندین برنامه یا یک برنامه واحد باشد.
دقت کنید که شما نمی توانید یک برنامه جنگو را بدون پروژه اجرا کنید. وب سایت های ساده مانند یک وبلاگ را می توان به طور کامل در یک برنامه واحد نوشت ، که می تواند به عنوان مثال blog یا weblog نامگذاری شود.
بسیار خوب! بنابراین ، برای نشان دادن ، بیایید یک تالار گفتمان یا تابلوی گفتگوی ساده ایجاد کنیم. برای ایجاد اولین برنامه خود ، به پوشه ای بروید که فایل manager.py در آن قرار دارد و دستور زیر را اجرا می کند:
django-admin startapp boards
توجه کنید که این بار از دستور startapp استفاده کردیم.
این ساختار فهرست ما به شکل زیر می باشد:
myproject/ |-- myproject/ | |-- boards/ <-- برنامه جدید جنگویی ما | | |-- migrations/ | | | +-- __init__.py | | |-- __init__.py | | |-- admin.py | | |-- apps.py | | |-- models.py | | |-- tests.py | | +-- views.py | |-- myproject/ | | |-- __init__.py | | |-- settings.py | | |-- urls.py | | |-- wsgi.py | +-- manage.py +-- venv/
اول بررسی کنیم که هر فایل چه کاری انجام می دهد:
- migrations/: در اینجا جنگو برخی از فایلها را ذخیره می کند تا تغییرات ایجاد شده در فایل models.py را پیگیری کند ، بنابراین پایگاه داده و models.py همگام سازی می شوند.
- admin.py: این یک فایل پیکربندی برای برنامه داخلی جنگو به نام Django Admin است.
- apps.py: این یک فایل پیکربندی از خود برنامه است.
- models.py: اینجا جایی است که ما موجودیت های برنامه وب خود را تعریف می کنیم. مدلها بطور خودکار توسط جنگو به جداول پایگاه داده ترجمه می شوند.
- tests.py: این فایل برای نوشتن تست واحد برای برنامه استفاده می شود.
- views.py: این فایلی است که ما در آن چرخه درخواست/پاسخ (request/response) برنامه وب خود را مدیریت می کنیم.
حالا که اولین برنامه خود را ایجاد کردیم ، پروژه خود را برای استفاده از آن پیکربندی می کنیم.برای انجام این کار ، settings.py را باز کنید و سعی کنید متغیر INSTALLED_APPS را پیدا کنید:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
همانطور که می بینید ، Django قبلاً با 6 برنامه داخلی نصب شده که آنها عملکردهای مشترکی را که اکثر برنامه های تحت وب به آنها احتیاج دارند ارائه می دهند ، مانند احراز هویت ، جلسات (sessions) ، مدیریت فایل های استاتیک (تصاویر ، جاوا اسکریپت ها ، css و غیره) و غیره.ما برنامه boards را که ایجاد کردیم به این لیست INSTALLED_APPS اضافه میکنیم.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'boards', ]
Hello, World!
اولین view خودمان را بنویسیم. جزئیات بسیاری را در آموزش بعدی بررسی خواهیم کرد. اما در حال حاضر ، فقط نحوه ایجاد یک صفحه جدید با جنگو را آزمایش می کنیم.
فایل views.py را در داخل برنامه boards باز کرده و کد زیر را اضافه کنید:
views.py
from django.http import HttpResponse def home(request): return HttpResponse('Hello, World!')
View ها توابع پایتون هستند که یک شیء HttpRequest
را دریافت کرده و یک شیء HttpResponse
را برمی گرداند. یک درخواست را به عنوان پارامتر دریافت می کنید و در نتیجه پاسخ را برمی گرداند. در اینجا ما یک نمای ساده به نام home تعریف کردیم که به سادگی پیامی سلام ، جهان را برمی گرداند. الان باید به جنگو بگوییم چه زمانی این View را ارائه دهد.که اینکار در داخل فایل urls.py انجام می شود:
urls.py
from django.conf.urls import path from django.contrib import admin from boards import views urlpatterns = [ path('', views.home, name='home'), path('admin/', admin.site.urls), ]
اگر قطعه بالا را با فایل urls.py خود مقایسه کنید ، متوجه خواهید شد که خط جدید زیر را اضافه کرده ام path('', views.home, name='home'),
و ماژول View ها را نیز وارد کردم.from boards import views
اگر که صفحه اصلی (این آدرس اینترنتی: http://127.0.0.1:8000) را وارد کنید به view مورد نظر راهنمایی می شوید.
ببینیم چی میشه:
python manage.py runserver
در مرورگر وب ، آدرس http://127.0.0.1:8000 را باز کنید:

خودشه! شما ابتدایی ترین نمای خود را ایجاد کرده اید.
اگر چیزی رو متوجه نشدید یا سوال و مشکلی بود می توانید از طریق نظرات و یا چت سوالات خود را مطرح کنید.
برای مطالعه قسمت بعد یعنی راهنمای کامل جنگو برای مبتدیان – قسمت ۲ بر روی لینک کلیک کنید.
3 دیدگاه ها