ایران جنگو - Iran Django
آشنایی با Django: شروع توسعه وب با پایتون
چرا Django اینقدر محبوب است؟ اگر با پایتون کار کرده باشی، احتمالاً اسم Django (جنگو) را شنیدهای. جنگو یک فریمورک قدرتمند و متنباز برای توسعه وب است که با زبان پایتون نوشته شده و به شما کمک میکند بسیار سریعتر، تمیزتر و امنتر وبسایت و وباپلیکیشن بسازید.
شعار معروف Django این است:
“Django makes it easier to build better Web apps more quickly and with less code.”
یعنی: جنگو کمک میکند اپلیکیشنهای وب بهتر را سریعتر و با کد کمتر بسازید.
در این مقاله، قدمبهقدم با مفاهیم پایه Django آشنا میشویم و میبینیم چطور میشود اولین پروژه جنگو را راهاندازی کرد.
Django چیست؟
Django یک فریمورک سطح بالا برای توسعه وب با پایتون است که روی این موارد تمرکز دارد:
- توسعه سریع (Rapid Development)
- ساختاردهی تمیز به کد (Clean & Maintainable Code)
- امنیت بالا (Security)
- قابلیت گسترش و مقیاسپذیری (Scalability)
جنگو بر اساس معماری MTV کار میکند که بسیار شبیه معماری MVC است.
- Model: لایهی دسترسی به دادهها (معمولاً پایگاه داده)
- Template: لایهی نمایش (HTML + تگهای قالبی جنگو)
- View: منطق اصلی برنامه، دریافت درخواست (Request) و برگرداندن پاسخ (Response)
مزایای Django
چند تا از مهمترین مزایای جنگو:
- سرعت توسعه:ابزارها و ساختار آماده دارد (مدیریت کاربران، پنل ادمین، فرمها و…) و نیاز به اختراع چرخ از اول نیست.
- امنیت:در برابر حملات شایع مثل SQL Injection, XSS, CSRF، Session Hijacking و … مکانیزمهای امنیتی آماده دارد.
- ORM قدرتمند:با استفاده از Django ORM بدون نوشتن مستقیم SQL، با مدلها کار میکنی.
- پنل مدیریت (Admin) آماده:با چند خط کد، یک پنل مدیریت دیتابیس و مدلها داری.
- جامعه کاربری بزرگ:هزاران پکیج آماده، آموزش و مستندات قوی.
پیشنیازها برای شروع کار با Django
قبل از شروع کار با جنگو بهتر است:
- مفاهیم پایه پایتون را بلد باشی (توابع، کلاسها، ماژولها)
- با محیط خط فرمان (Command Line) کمی آشنا باشی
- در حد مقدماتی HTML و شاید CSS را بدانی (برای Templateها)
نصب Django
معمولاً برای نصب جنگو از pip استفاده میکنیم. بهترین کار این است که در یک virtual environment (محیط مجازی) این کار را انجام دهی.
مثال کلی (بدون وارد شدن به جزئیات سیستمعامل):
- ساخت محیط مجازی:python -m venv venv
- فعالسازی محیط مجازی (بسته به سیستمعامل)
- نصب جنگو:pip install django
بعد از نصب، میتوانی با دستور زیر نسخه جنگو را چک کنی:
python -m django --version
ساخت اولین پروژه Django
در جنگو، یک “پروژه” مجموعهای از تنظیمات (settings)، آدرسدهی (urls) و اپلیکیشنها است.
برای ساخت یک پروژه جدید از دستور django-admin استفاده میکنیم، چیزی مثل:
django-admin startproject myproject
با این کار پوشهای به نام myproject ساخته میشود که معمولاً ساختاری شبیه این دارد:
- manage.py
- myproject/
- init.py
- settings.py
- urls.py
- asgi.py
- wsgi.py
به طور خلاصه:
- settings.py:تنظیمات کلی پروژه مثل تنظیمات دیتابیس، زمان، زبان، نصب اپلیکیشنها و…
- urls.py:نقشهی URLهای پروژه. مشخص میکند که هر URL به کدام view وصل شود.
- manage.py:یک ابزار خط فرمان برای اجرای دستورات مدیریتی جنگو (راهاندازی سرور توسعه، ساخت اپ، مهاجرت دیتابیس و …).
اجرای سرور توسعه
با رفتن به پوشه پروژه و اجرای:
python manage.py runserver
سرور توسعه جنگو روی آدرس پیشفرض http://127.0.0.1:8000 اجرا میشود و اگر مرورگر را باز کنی، صفحه خوشآمدگویی Django را میبینی.
تفاوت Project و App در Django
این یکی از سوالهای رایج مبتدیهاست:
- Project:پوستهی کلی است که تنظیمات و پیکربندیها را نگه میدارد.
- App:یک ماژول یا بخش مستقل از پروژه است که یک وظیفه مشخص را انجام میدهد. مثلاً:
- app کاربران (accounts)
- app محصولات (products)
- app وبلاگ (blog)
در یک پروژه جنگو، میتوانی چندین app داشته باشی و حتی یک app را در چند پروژه مختلف استفاده کنی.
ساخت اولین App در Django
برای ساخت یک اپلیکیشن جدید از دستور زیر استفاده میکنیم (مثلاً اپ blog):
python manage.py startapp blog
با این کار پوشه blog ساخته میشود که معمولاً شامل فایلهای زیر است:
نقش فایلها:
- models.py:تعریف مدلها و ساختار دادهها (جداول دیتابیس).
- views.py:منطق اصلی پاسخگویی به درخواستها (مثلاً نمایش یک صفحه یا برگرداندن JSON).
- admin.py:ثبت مدلها در پنل ادمین جنگو.
- urls.py (در صورت ایجاد):آدرسهای مخصوص این app را نگه میدارد.
برای اینکه جنگو این app را بشناسد، باید نام آن را در فایل settings.py و بخش INSTALLED_APPS اضافه کنی.
Model، View و URL در عمل چهکار میکنند؟
برای ساده شدن، یک مثال ساده در نظر بگیریم: نمایش یک صفحه “سلام دنیا” از طریق Django.
۱. تعریف View
در فایل views.py:
- یک تابع تعریف میکنی که request را بگیرد و یک response برگرداند.
- این تابع میتواند HTML رندر کند یا یک متن ساده برگرداند.
۲. تعریف URL
در فایل urls.py (در پروژه یا در خود app):
- مسیر URL را تعریف میکنی و آن را به view مربوطه وصل میکنی.
۳. Model
اگر بخواهی دادهای را از دیتابیس نمایش دهی (مثلاً لیست مقالات وبلاگ):
- در models.py مدل Article را تعریف میکنی.
- با مهاجرتها (migrations) جداول در دیتابیس ساخته میشوند.
- در view دادهها را از مدل میگیری و در قالب (Template) نمایش میدهی.
قالبها (Templates) در Django
Templateها همان فایلهای HTML هستند که میتوانی داخل آنها از تگهای مخصوص جنگو استفاده کنی. مثلاً:
- حلقهها (for)
- شرطها (if)
- نمایش متغیرها ({{ variable }})
این سیستم قالبنویسی کمک میکند منطق نمایش (Presentation) را از منطق اصلی برنامه (Business Logic) جدا نگه داری.
پنل مدیریت Django (Django Admin)
یکی از خفنترین قابلیتهای جنگو همین پنل مدیریت آماده است. با چند خط کد:
- مدل را در admin.py ثبت میکنی
- مهاجرتها را اجرا میکنی
- یک superuser میسازی
- و با رفتن به /admin به یک داشبورد مدیریتی کامل برای دیتابیس دسترسی پیدا میکنی.
این موضوع برای MVPها و پروژههای اولیه فوقالعاده سرعت میدهد.
جمعبندی: قدم بعدی چیست؟
تا اینجا با مفاهیم پایه Django آشنا شدیم:
- جنگو چیست و چرا محبوب است
- معماری MTV و ساختار پروژه
- تفاوت project و app
- مدلها، ویوها، URLها و قالبها
- پنل مدیریت و نصب اولیه
قدمهای بعدی منطقی برای کسی که این مقاله را میخواند:
- ساخت اولین view و اتصال آن به یک URL
- تعریف اولین model و کار با مهاجرتها (migrations)
- کار با قالبها (Templates) و فرمها (Forms)
- اتصال به دیتابیس واقعی (مثلاً PostgreSQL)