در دنیای پرشتاب توسعه وب، انتخاب ابزار مناسب میتواند تفاوت میان یک پروژه موفق و یک تجربه پرهزینه باشد. اگر به دنبال ساخت سریع، امن و مقیاسپذیر وباپلیکیشن هستید، فریمورک Django یکی از بهترین گزینههاست. این فریمورک متنباز مبتنی بر زبان پایتون، با شعار «سریعتر بساز، تمیزتر بساز» (The web framework for perfectionists with deadlines)، به توسعهدهندگان کمک میکند تا بدون درگیر شدن با جزئیات تکراری، روی منطق اصلی برنامه تمرکز کنند.
در این مطلب، قصد داریم بهصورت گامبهگام با مفاهیم پایه Django آشنا شویم، اولین پروژه خود را بسازیم و درک روشنی از ساختار و قابلیتهای آن به دست آوریم. اگر تازهکار هستید یا فقط کنجکاوید بدانید چرا Django اینقدر محبوب است، این مطلب برای شماست.
Django چیست؟
جنگو یک فریمورک سطح بالا برای توسعه وب است که با زبان برنامهنویسی پایتون نوشته شده و هدف آن سادهسازی و تسریع فرآیند ساخت وباپلیکیشنهای امن، قابل نگهداری و مقیاسپذیر است. این فریمورک با ارائه ابزارهای آماده و ساختار منظم، به توسعهدهندگان اجازه میدهد تا بدون درگیر شدن با جزئیات تکراری، روی منطق اصلی برنامه تمرکز کنند.
معماری MTV: قلب Django
در حالی که بسیاری از فریمورکها از الگوی MVC (Model–View–Controller) استفاده میکنند، Django از معماری مشابهی به نام MTV بهره میبرد:
- Model (مدل): تعریف ساختار دادهها و ارتباط با دیتابیس از طریق ORM داخلی Django.
- Template (قالب): نمایش دادهها به کاربر با استفاده از فایلهای HTML و تگهای مخصوص Django.
- View (نما): منطق پردازش درخواستها و ارسال پاسخ مناسب به کاربر.
این معماری باعث جداسازی مسئولیتها و افزایش خوانایی و نگهداری کد میشود.
اجزای کلیدی Django
- ORM (Object-Relational Mapping): تبدیل مستقیم مدلهای پایتون به جداول دیتابیس بدون نیاز به نوشتن SQL.
- Admin Panel: پنل مدیریتی خودکار برای مدیریت دادهها، کاربران و مدلها بدون نیاز به کدنویسی اضافی.
- URL Routing: سیستم قدرتمند برای تعریف مسیرهای URL و اتصال آنها به Viewهای مربوطه.
- Middleware: لایههایی برای پردازش درخواستها و پاسخها، مانند احراز هویت، امنیت و کش.
چرا Django محبوب است؟
- توسعه سریع با ابزارهای آماده
- امنیت بالا (محافظت در برابر حملات رایج مانند CSRF و SQL Injection)
- جامعه فعال و مستندات کامل
- مناسب برای پروژههای کوچک تا بزرگ، از وبلاگ شخصی تا شبکههای اجتماعی
پیشنیازها و نصب Django
پیش از شروع ساخت اولین پروژه Django، باید چند ابزار پایه را روی سیستم خود نصب و آماده کنید. خوشبختانه، Django با پایتون کار میکند و نصب آن بسیار ساده است.
۱. نصب پایتون
Django با زبان پایتون نوشته شده، بنابراین ابتدا باید مطمئن شوید که پایتون روی سیستم شما نصب است.
- برای بررسی نصب پایتون، در ترمینال یا CMD بنویسید:
python --version
- اگر پایتون نصب نیست، میتوانید آن را از python.org دانلود و نصب کنید.
۲. نصب pip (مدیر بستههای پایتون)
در اکثر نسخههای جدید پایتون، pip بهصورت پیشفرض نصب شده است. برای اطمینان، دستور زیر را اجرا کنید:
pip --version
اگر pip نصب نبود، میتوانید آن را با دستور زیر نصب کنید:
python -m ensurepip --default-pip
۳. نصب Django
اکنون آماده نصب Django هستید. کافیست دستور زیر را در ترمینال وارد کنید:
pip install django
پس از نصب، میتوانید نسخه Django را با دستور زیر بررسی کنید:
django-admin --version
اگر عددی مانند 5.0 یا مشابه نمایش داده شد، یعنی نصب موفق بوده است.
۴. ایجاد محیط مجازی (اختیاری ولی توصیهشده)
برای جلوگیری از تداخل بستهها در پروژههای مختلف، بهتر است از محیط مجازی استفاده کنید:
python -m venv myenv
source myenv/bin/activate # در لینوکس یا مک
myenv\Scripts\activate # در ویندوز
سپس Django را در همین محیط نصب کنید.
ساخت اولین پروژه Django
پس از نصب موفق Django، وقت آن رسیده که اولین پروژه خود را بسازید. Django پروژهها را بهصورت ساختارمند مدیریت میکند و هر پروژه میتواند شامل چندین اپلیکیشن باشد.
۱. ایجاد پروژه اصلی
در ترمینال یا CMD، به پوشهای بروید که میخواهید پروژه در آن ساخته شود، سپس دستور زیر را اجرا کنید:
django-admin startproject mysite
این دستور پوشهای به نام mysite ایجاد میکند که شامل فایلهای پایه پروژه است.
۲. بررسی ساختار پروژه
پوشه mysite شامل فایلها و پوشههای زیر است:
mysite/
├── manage.py
├── mysite/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
manage.py: ابزار خط فرمان برای مدیریت پروژه (اجرای سرور، مهاجرتها و غیره)settings.py: تنظیمات کلی پروژه (پایگاه داده، زبان، اپلیکیشنها)urls.py: تعریف مسیرهای URL و اتصال آنها به Viewهاwsgi.pyوasgi.py: برای اجرای پروژه در محیطهای مختلف سرور
۳. ساخت یک اپلیکیشن داخلی
در Django، هر بخش از پروژه (مثلاً وبلاگ، فروشگاه، حساب کاربری) بهصورت یک اپلیکیشن جداگانه تعریف میشود. برای ساخت اپلیکیشن جدید، وارد پوشه پروژه شوید و دستور زیر را اجرا کنید:
cd mysite
python manage.py startapp blog
این دستور پوشهای به نام blog ایجاد میکند که شامل فایلهای زیر است:
blog/
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── views.py
├── __init__.py
├── migrations/
views.py: تعریف منطق نمایش صفحاتmodels.py: تعریف ساختار دادههاadmin.py: تنظیمات پنل مدیریتیmigrations/: نگهداری تغییرات پایگاه داده
۴. افزودن اپلیکیشن به تنظیمات پروژه
برای فعالسازی اپلیکیشن، باید نام آن را در فایل settings.py اضافه کنید:
INSTALLED_APPS = [
...
'blog',
]
اکنون اپلیکیشن شما آماده است تا View، مدل و قالبهای خود را تعریف کند.
اجرای سرور و مشاهده خروجی
پس از ساخت پروژه و اپلیکیشن، وقت آن رسیده که پروژه را اجرا کرده و خروجی اولیه را در مرورگر ببینید. Django یک سرور توسعه داخلی دارد که برای تست و بررسی پروژه بسیار مناسب است.
۱. اجرای سرور توسعه
در ترمینال، داخل پوشه پروژه (جایی که فایل manage.py قرار دارد) دستور زیر را اجرا کنید:
python manage.py runserver
اگر همهچیز درست باشد، پیامی مشابه زیر نمایش داده میشود:
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
۲. مشاهده صفحه پیشفرض Django
مرورگر خود را باز کرده و آدرس زیر را وارد کنید:
http://127.0.0.1:8000/
اگر نصب و تنظیمات اولیه درست انجام شده باشد، صفحه خوشآمدگویی Django را مشاهده خواهید کرد. این صفحه نشان میدهد که پروژه شما بهدرستی اجرا شده و آماده توسعه است.
۳. تغییر تنظیمات محلی (اختیاری)
اگر میخواهید زبان و منطقه زمانی پروژه را تغییر دهید، فایل settings.py را باز کرده و بخشهای زیر را ویرایش کنید:
LANGUAGE_CODE = 'fa-ir' # برای فارسی
TIME_ZONE = 'Asia/Tehran' # منطقه زمانی ایران
سپس سرور را مجدد راهاندازی کنید تا تغییرات اعمال شوند.
ساخت اولین View و Template
اکنون که پروژه Django شما اجرا شده و صفحه پیشفرض را دیدهاید، وقت آن رسیده که محتوای دلخواه خود را بسازید و در مرورگر نمایش دهید. این کار با تعریف یک View و اتصال آن به یک Template انجام میشود.
۱. تعریف یک View ساده
ابتدا فایل views.py در اپلیکیشن blog را باز کرده و یک تابع View ساده اضافه کنید:
from django.http import HttpResponse
def home(request):
return HttpResponse("سلام دنیا! این اولین صفحه Django شماست.")
این View یک پاسخ ساده متنی به مرورگر ارسال میکند.
۲. اتصال View به URL
اکنون باید این View را به یک مسیر URL متصل کنید. ابتدا در پوشه blog یک فایل جدید به نام urls.py بسازید و محتوای زیر را در آن قرار دهید:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
سپس فایل urls.py اصلی پروژه (در پوشه mysite) را باز کرده و مسیر اپلیکیشن را اضافه کنید:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
اکنون اگر مرورگر را باز کنید و به آدرس http://127.0.0.1:8000/ بروید، پیام «سلام دنیا!» را خواهید دید.
۳. ساخت Template HTML
برای نمایش صفحات HTML بهجای متن ساده، باید از سیستم قالب Django استفاده کنید. ابتدا در پوشه blog یک پوشه به نام templates بسازید و داخل آن فایل home.html را قرار دهید:
blog/
└── templates/
└── home.html
محتوای فایل home.html میتواند بهصورت زیر باشد:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>صفحه اصلی</title>
</head>
<body>
<h1>به اولین وباپلیکیشن Django خود خوش آمدید!</h1>
</body>
</html>
سپس View را طوری تغییر دهید که این قالب را نمایش دهد:
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
اکنون با بارگذاری صفحه، قالب HTML شما نمایش داده میشود.
مدلسازی دادهها با ORM
یکی از ویژگیهای قدرتمند Django، سیستم ORM (Object-Relational Mapping) آن است. بهجای نوشتن مستقیم دستورات SQL، میتوانید مدلهای پایتونی تعریف کنید که بهصورت خودکار به جداول دیتابیس تبدیل میشوند.
۱. تعریف یک مدل ساده
فایل models.py در اپلیکیشن blog را باز کرده و مدل زیر را اضافه کنید:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
در این مدل:
title: یک رشته با حداکثر ۲۰۰ کاراکترcontent: متن کامل پستcreated_at: زمان ایجاد پست (بهصورت خودکار ثبت میشود)
۲. اعمال تغییرات در دیتابیس
برای ایجاد جدول مربوط به مدل در دیتابیس، ابتدا باید مهاجرتها را ایجاد و سپس اعمال کنید:
python manage.py makemigrations
python manage.py migrate
با این کار، Django فایلهای مهاجرت را تولید کرده و ساختار دیتابیس را بهروزرسانی میکند.
۳. ثبت مدل در پنل مدیریت
برای مدیریت دادهها از طریق پنل ادمین، باید مدل را در admin.py ثبت کنید:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
۴. استفاده از پنل مدیریت
- ابتدا یک کاربر ادمین بسازید:
python manage.py createsuperuser
- سپس سرور را اجرا کرده و به آدرس زیر بروید:
http://127.0.0.1:8000/admin/
با ورود به پنل مدیریت، میتوانید پستهای جدید ایجاد کرده، ویرایش یا حذف کنید، همه بدون نوشتن حتی یک خط HTML یا SQL.
فرمها و تعامل با کاربر
در بسیاری از وباپلیکیشنها، دریافت اطلاعات از کاربر بخش مهمی از عملکرد سیستم است. Django با سیستم فرمسازی قدرتمند خود، امکان ساخت فرمهای امن، قابل اعتبارسنجی و متصل به مدلهای دیتابیس را فراهم میکند.
۱. ساخت فرم ساده با forms.py
ابتدا در پوشه اپلیکیشن blog، فایلی به نام forms.py بسازید و فرم زیر را تعریف کنید:
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
این فرم شامل سه فیلد است: نام، ایمیل و پیام.
۲. نمایش فرم در View
در فایل views.py، یک View جدید برای نمایش و پردازش فرم بنویسید:
from django.shortcuts import render
from .forms import ContactForm
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# دادهها را پردازش کنید (مثلاً ذخیره یا ارسال ایمیل)
return render(request, 'thanks.html')
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
۳. ساخت قالب HTML برای فرم
در پوشه templates، فایل contact.html را بسازید:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>تماس با ما</title>
</head>
<body>
<h2>فرم تماس</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">ارسال</button>
</form>
</body>
</html>
{{ form.as_p }}فرم را بهصورت پاراگرافی نمایش میدهد.{% csrf_token %}برای امنیت فرم الزامی است و از حملات CSRF جلوگیری میکند.
۴. افزودن مسیر URL
در فایل urls.py اپلیکیشن blog، مسیر جدید را اضافه کنید:
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('contact/', views.contact, name='contact'),
]
اکنون با مراجعه به آدرس http://127.0.0.1:8000/contact/ فرم تماس را مشاهده خواهید کرد و میتوانید اطلاعات را ارسال کنید.
نکات امنیتی و بهینهسازی
جنگو بهصورت پیشفرض بسیاری از اصول امنیتی را رعایت میکند، اما برای ساخت یک وباپلیکیشن حرفهای، لازم است برخی تنظیمات و نکات را بهصورت آگاهانه بررسی و پیادهسازی کنید. همچنین بهینهسازی عملکرد پروژه باعث افزایش سرعت و تجربه کاربری بهتر میشود.
۱. تنظیمات امنیتی پایه
- فعالسازی CSRF Protection: این قابلیت بهصورت پیشفرض فعال است و از ارسال فرمهای جعلی جلوگیری میکند. در قالبها حتماً از
{% csrf_token %}استفاده کنید. - مخفیسازی کلیدهای حساس: کلید
SECRET_KEYرا در فایل.envیا متغیرهای محیطی نگه دارید و از انتشار آن در مخازن عمومی خودداری کنید. - تنظیم
DEBUG = Falseدر محیط واقعی: در فایلsettings.py، حالتDEBUGرا فقط در محیط توسعه فعال نگه دارید. - محدود کردن دامنههای مجاز: در تنظیمات
ALLOWED_HOSTSفقط دامنههای معتبر را وارد کنید:
ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']
۲. احراز هویت و مدیریت کاربران
- از سیستم احراز هویت داخلی Django برای ثبتنام، ورود و مدیریت کاربران استفاده کنید.
- برای رمز عبور از فرمهای داخلی Django استفاده کنید که شامل اعتبارسنجی و هش امن هستند.
- میتوانید با افزودن
django.contrib.auth.decorators.login_requiredدسترسی به صفحات خاص را محدود کنید.
۳. بهینهسازی عملکرد
- استفاده از کش (Caching): با فعالسازی کش میتوانید سرعت بارگذاری صفحات را افزایش دهید. Django از چندین backend پشتیبانی میکند (مانند Memcached یا Redis).
- کاهش تعداد Queryها: از ابزارهایی مانند
select_related()وprefetch_related()برای کاهش تعداد درخواستهای دیتابیس استفاده کنید. - فشردهسازی فایلهای استاتیک: با استفاده از ابزارهایی مانند
whitenoiseیا CDN، فایلهای CSS و JS را بهینه و سریعتر بارگذاری کنید.
۴. ابزارهای توسعه و تست
- Django Debug Toolbar: ابزاری مفید برای بررسی عملکرد، Queryها و وضعیت درخواستها در محیط توسعه.
- Coverage و pytest: برای نوشتن تستهای خودکار و بررسی پوشش کد.
جمعبندی
اکنون که با اصول اولیه Django آشنا شدید و اولین وباپلیکیشن خود را ساختید، وقت آن است که پروژه را توسعه دهید، حرفهایتر کنید و در نهایت آن را در محیط واقعی منتشر نمایید.
۱. توسعه پروژه
- افزودن قابلیتهای جدید: میتوانید اپلیکیشنهای جدیدی مانند سیستم ثبتنام، وبلاگ، فروشگاه یا پنل کاربری بسازید.
- استفاده از قالبهای پیشرفته: با استفاده از Bootstrap یا Tailwind میتوانید ظاهر صفحات را حرفهایتر کنید.
- مدیریت فایلهای استاتیک و رسانهای: Django امکان بارگذاری تصاویر، فایلها و مدیریت آنها را از طریق تنظیمات
MEDIA_ROOTوSTATICFILES_DIRSفراهم میکند.
۲. تست و نگهداری
- نوشتن تستهای خودکار: با استفاده از
unittestیاpytestمیتوانید عملکرد بخشهای مختلف پروژه را بررسی کنید. - مدیریت خطاها و لاگها: تنظیم لاگگیری در فایل
settings.pyبه شما کمک میکند تا خطاها را ردیابی و رفع کنید.
۳. استقرار در محیط واقعی
برای انتشار پروژه در اینترنت، باید آن را روی یک سرور مناسب مستقر کنید. مراحل کلی عبارتاند از:
- انتخاب هاست یا سرور مجازی: مانند Heroku ،DigitalOcean یا VPS اختصاصی
- استفاده از Gunicorn و Nginx: برای اجرای پروژه در محیط تولید
- تنظیم پایگاه داده واقعی: مانند PostgreSQL یا MySQL بهجای SQLite
- فعالسازی HTTPS و گواهی SSL: برای امنیت ارتباطات کاربران
۴. منابع یادگیری بیشتر
برای ادامه مسیر، منابع زیر توصیه میشوند:
- مستندات رسمی Django
- انجمنهای پرسش و پاسخ مانند Stack Overflow و Reddit
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید