کتابخانه django در پایتون
جنگو (Django) یکی از قدرتمندترین و محبوبترین فریمورکهای زبان پایتون برای توسعه وب است. این فریمورک بر پایه معماری MVT (Model-View-Template) ساخته شده و به توسعهدهندگان کمک میکند تا بهصورت سریع، ایمن و قابل نگهداری، برنامههای وب تولید کنند. در این مقاله، به بررسی مفاهیم اصلی جنگو، ساختار آن، نحوه کار، و بهترین روشهای استفاده از آن میپردازیم.
مقدمهای بر جنگو
جنگو یک فریمورک متنباز (Open Source) است که در ابتدا توسط برنامهنویسان یک شرکت خبری ایجاد شد تا فرآیند ساخت وبسایتهای پیچیده را سادهتر کند. هدف اصلی جنگو، توسعه سریع (Rapid Development) و قابلیت استفاده مجدد از کد است.
ویژگیهای کلیدی Django
- ORM (Object Relational Mapper): امکان تعامل با دیتابیسها بدون نیاز به نوشتن کوئریهای SQL.
- امنیت بالا: جنگو بسیاری از آسیبپذیریهای رایج مانند SQL Injection، CSRF، XSS را مدیریت میکند.
- پنل ادمین خودکار: تولید خودکار پنل مدیریت برای مدلهای دادهای.
- توسعه سریع: الگوهای آماده برای ثبتنام، احراز هویت، مدیریت سشن و غیره.
- پشتیبانی از تست و مقیاسپذیری: مناسب برای پروژههای کوچک تا بزرگ مانند شبکههای اجتماعی یا فروشگاههای آنلاین.
ساختار پروژه در Django
وقتی پروژهای جدید در جنگو ایجاد میکنید، ساختار پوشهها به شکل زیر است:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
app1/
models.py
views.py
urls.py
templates/
در این ساختار:
- manage.py: ابزار خط فرمان برای اجرای دستورات مدیریت پروژه مانند اجرای سرور یا مهاجرت دیتابیس.
- settings.py: شامل تنظیمات پروژه از جمله دیتابیس، اپلیکیشنها و مسیرها.
- urls.py: مسیرهای URL که به ویوهای مختلف متصل میشوند.
- models.py: تعریف ساختار دادهها با استفاده از ORM.
- views.py: منطق پردازش درخواستها و بازگشت پاسخها.
- templates/: شامل فایلهای HTML برای نمایش محتوا.
شروع کار با Django
نصب Django
برای نصب Django از pip استفاده میشود:
pip install djangoپس از نصب، با دستور زیر یک پروژه جدید ایجاد میکنید:
django-admin startproject myprojectسپس وارد پوشه پروژه شوید و یک اپلیکیشن جدید بسازید:
cd myproject
python manage.py startapp blogاکنون اپلیکیشن “blog” در پوشه پروژه ایجاد شده و میتوانید مدلها، ویوها و قالبهای خود را بسازید.
کار با مدلها (Models)
مدلها در Django معرف ساختار دادهای هستند که با دیتابیس ارتباط دارند.
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
در این مثال، مدل Post جدولی در دیتابیس ایجاد میکند که شامل عنوان، محتوا و تاریخ ایجاد است. برای اعمال تغییرات:
python manage.py makemigrations
python manage.py migrateدستور makemigrations تغییرات را ثبت میکند و migrate آن را روی دیتابیس اعمال میکند.
ایجاد ویو (View) و مسیر (URL)
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})
در این ویو، همه پستها از دیتابیس گرفته میشوند و به قالب HTML ارسال میگردند. حال باید مسیر مربوط به این ویو را در فایل urls.py اضافه کنیم:
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
در نهایت، قالب HTML برای نمایش پستها در پوشه templates/blog/ ساخته میشود:
<h2>لیست پستها</h2>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% endfor %}
</ul>
وقتی سرور را با دستور زیر اجرا کنید:
python manage.py runserverدر مرورگر آدرس http://127.0.0.1:8000 را باز کرده و خروجی را مشاهده خواهید کرد.
پنل مدیریت Django
یکی از قدرتمندترین امکانات جنگو، سیستم ادمین آن است. برای استفاده:
python manage.py createsuperuserپس از ایجاد کاربر مدیر، با رفتن به آدرس /admin میتوانید مدلهای خود را مدیریت کنید. کافی است مدل را در admin.py ثبت کنید:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
اکنون میتوانید از طریق پنل مدیریت، پستهای جدید اضافه یا ویرایش کنید.
بهترین روشها (Best Practices) در Django
- استفاده از Virtual Environment: همیشه پروژههای جنگو را در محیط مجازی ایجاد کنید تا وابستگیها از پروژههای دیگر جدا بمانند.
- استفاده از فایل .env: اطلاعات حساس مانند کلیدها و پسوردها را در فایل .env نگهدارید.
- استفاده از Class-Based Views: برای ویوهای پیچیدهتر، بهجای تابعی از کلاسها استفاده کنید.
- مدیریت Static و Media Files: مسیر فایلهای استاتیک را در تنظیمات مشخص کرده و از دستور collectstatic در تولید استفاده کنید.
- نوشتن تست: همیشه برای منطق مهم، تست بنویسید تا از پایداری سیستم اطمینان حاصل کنید.
مثال از Class-Based View
from django.views.generic import ListView
from .models import Post
class PostListView(ListView):
model = Post
template_name = 'blog/post_list.html'
context_object_name = 'posts'
در این حالت بهجای تابع، از کلاس برای نمایش پستها استفاده شده است. این روش کد را خواناتر و قابل گسترشتر میکند.
امنیت در Django
جنگو از لحاظ امنیتی یکی از فریمورکهای برتر است. بهصورت پیشفرض از حملات زیر جلوگیری میکند:
| نوع حمله | مکانیسم محافظتی Django |
|---|---|
| SQL Injection | ORM به جای کوئریهای خام استفاده میشود. |
| XSS (Cross Site Scripting) | متون در قالبها بهصورت خودکار escape میشوند. |
| CSRF (Cross Site Request Forgery) | استفاده از توکن CSRF در فرمها. |
| Clickjacking | هدر امنیتی X-Frame-Options. |
جمعبندی
کتابخانه Django یک ابزار کامل برای ساخت وباپلیکیشنهای مدرن در پایتون است. با ترکیب سادگی، سرعت توسعه، امنیت بالا و ساختار ماژولار، جنگو به یکی از بهترین گزینهها برای برنامهنویسان تبدیل شده است. چه در حال ساخت یک وبلاگ ساده باشید یا یک پلتفرم پیچیده، Django میتواند مسیر توسعه را برای شما آسانتر و حرفهایتر کند.
آیا این مطلب برای شما مفید بود ؟




