ویژگی تصویر

کتابخانه django در پایتون

  /  پایتون   /  کتابخانه 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 InjectionORM به جای کوئری‌های خام استفاده می‌شود.
XSS (Cross Site Scripting)متون در قالب‌ها به‌صورت خودکار escape می‌شوند.
CSRF (Cross Site Request Forgery)استفاده از توکن CSRF در فرم‌ها.
Clickjackingهدر امنیتی X-Frame-Options.

جمع‌بندی

کتابخانه Django یک ابزار کامل برای ساخت وب‌اپلیکیشن‌های مدرن در پایتون است. با ترکیب سادگی، سرعت توسعه، امنیت بالا و ساختار ماژولار، جنگو به یکی از بهترین گزینه‌ها برای برنامه‌نویسان تبدیل شده است. چه در حال ساخت یک وبلاگ ساده باشید یا یک پلتفرم پیچیده، Django می‌تواند مسیر توسعه را برای شما آسان‌تر و حرفه‌ای‌تر کند.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: