جستجو
menu

تبلیغات خود را شروع کنید و تا 36,000,000 تومان پروموشن دریافت کنید

مشتریان جدید که تازه شروع به تبلیغ میکنند، برای شروع موفقیت آمیز کمپین، تا مبلغ 12000 بات پروموشن دریافت میکنند.

راهنمای جامع برنامه نویسی وب با جنگو (Django)

فهرست مطالب

مقدمه‌ای بر برنامه‌نویسی وب با جنگو

امروزه برنامه نویسی وب یکی از پرطرفدارترین حوزه‌های فناوری اطلاعات محسوب می‌شود. چارچوب‌های متعددی برای توسعه وب وجود دارند اما «جنگو» (Django) یکی از محبوب‌ترین و کامل‌ترین آن‌هاست که به زبان پایتون نوشته شده است. جنگو ابزاری قدرتمند برای ساخت وبسایت‌ها و برنامه‌های تحت وب با امکانات زیاد و بهترین شیوه‌های توسعه است. در این مقاله به طور مفصل با جنگو آشنا می‌شویم و بخش‌های مختلف آن را بررسی می‌کنیم.

جنگو چیست؟

جنگو یک فریم‌ورک پیشرفته برای توسعه وب است که بر پایه زبان برنامه‌نویسی پایتون ساخته شده. هدف اصلی جنگو توسعه پرسرعت و آسان برنامه‌های وب است، بدون آن‌که امنیت و مقیاس‌پذیری قربانی شود. جنگو مطابق معماری MVT (Model-View-Template) کار می‌کند و امکاناتی از جمله ORM، سیستم مدیریت کاربر، مسیریابی، قالب‌سازی و فرم‌سازی را در اختیار توسعه‌دهنده قرار می‌دهد.

ویژگی‌های کلیدی جنگو

  • سریع و مقیاس‌پذیر
  • قابلیت‌های امنیتی پیشرفته
  • ORM قوی برای کار با پایگاه داده
  • مدیریت پنل ادمین قوی
  • انعطاف‌پذیری و ماژولار بودن
  • مدیریت راحت فرم‌ها و قالب‌ها
  • اکوسیستم غنی با کتابخانه‌های جانبی متنوع

شروع کار با جنگو

نصب جنگو

برای شروع به کار با جنگو ابتدا باید پایتون (معمولا نسخه ۳.۶ به بالا) نصب شده باشد. سپس با دستور زیر می‌توانید جنگو را نصب کنید:

pip install django

پس از نصب جنگو، با تایپ دستور زیر یک پروژه جدید بسازید:

django-admin startproject mysite

مسیر پوشه را تغییر دهید و یک اپلیکیشن نمونه بسازید:

cd mysite
python manage.py startapp blog

ساختار پروژه جنگو

پس از ساخت پروژه، ساختار دایرکتوری شبیه زیر خواهد بود:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    blog/
        migrations/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py

هر اپلیکیشن مسئول انجام یک بخش خاص از پروژه است و می‌توانید چندین اپ را در یک پروژه قرار دهید.

ORM و مدل‌ها در جنگو

مدل‌ها ابزار اصلی جنگو برای مدیریت داده هستند. با تعریف مدل‌ها، جداول دیتابیس به طور خودکار ساخته می‌شوند. برای ایجاد یک مدل نمونه در models.py چنین عمل می‌کنیم:

from django.db import models
class Post(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    published = models.DateTimeField(auto_now_add=True)

بعد از تعریف مدل‌ها باید دستورات زیر را اجرا کنیم:

python manage.py makemigrations
python manage.py migrate

مدیریت داده‌ها با Shell جنگو

برای ایجاد نمونه داده به صورت تعاملی:

python manage.py shell
>>> from blog.models import Post
>>> post = Post.objects.create(title="نمونه", body="محتوای پست")
>>> posts = Post.objects.all()

ویوها و URLها

ویوها منطق هر درخواست کاربر را تامین می‌کنند. یک ویوی ساده در views.py:

from django.http import HttpResponse

def index(request):
    return HttpResponse("سلام! به وبلاگ خوش آمدید.")

برای مسیردهی (Route) باید آدرس را به ویو وصل کنیم. مثلا در urls.py اپ:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
]

قالب‌ها (Templates)

جنگو موتور قالب (Template Engine) خود را دارد. قالب‌ها با زبان شبه HTML و تگ‌های خاص جنگو نوشته می‌شوند تا داده‌های پویا را نمایش دهند. پوشه templates بسازید و یک فایل index.html اضافه کنید:

<h1>{{ title }}</h1>
<p>{{ body }}</p>

در ویو مربوطه:

from django.shortcuts import render

def index(request):
    context = {'title': 'عنوان نمونه', 'body': 'بدنه نمونه'}
    return render(request, 'index.html', context)

کار با فرم‌ها

فرم‌ها در جنگو بسیار قدرتمند هستند و مدیریت اعتبارسنجی ورودی کاربر را راحت می‌کنند. یک فرم ساده در forms.py:

from django import forms

class PostForm(forms.Form):
    title = forms.CharField(max_length=200)
    body = forms.CharField(widget=forms.Textarea)

در ویوها می‌توانید فرم را پردازش کنید:


from .forms import PostForm

def post_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            # ذخیره داده
            pass
    else:
        form = PostForm()
    return render(request, 'post_form.html', {'form': form})

پنل مدیریت قدرتمند جنگو

یکی از مزیت‌های جنگو داشتن پنل ادمین آماده است. برای فعالسازی مدل‌ها در پنل ادمین، کافی است در admin.py اپلیکیشن بنویسید:


from .models import Post
from django.contrib import admin

admin.site.register(Post)

سپس با ایجاد کاربر ادمین:

python manage.py createsuperuser

می‌توانید به آدرس /admin رفته و داده‌ها را مدیریت کنید.

احراز هویت و مدیریت کاربران

جنگو از سیستم احراز هویت داخلی برخوردار است. برای لاگین و رجیستر کردن کاربران، می‌توانید از مدل User و فرم‌های آماده django.contrib.auth استفاده کنید.


from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
from django.shortcuts import render, redirect

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('home')
    else:
        form = UserCreationForm()
    return render(request, 'register.html', {'form': form})

ساخت REST API با جنگو (Django REST Framework)

برای توسعه APIهای مبتنی بر REST می‌توانید از افزونه Django REST Framework بهره ببرید. پس از نصب:

pip install djangorestframework

سپس اپلیکیشن را به INSTALLED_APPS اضافه کنید و سریعا ویو، سریالایزر و route را بسازید.


from rest_framework import serializers, viewsets
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

در urls.py


from rest_framework.routers import DefaultRouter
from .views import PostViewSet

router = DefaultRouter()
router.register(r'posts', PostViewSet)

urlpatterns += router.urls

نکات پیشرفته و حرفه‌ای در جنگو

Middleware

Middleware امکان پردازش درخواست‌ها و پاسخ‌ها را می‌دهد. با تعریف middleware مخصوص خود می‌توانید تعامل بیشتری داشته باشید.

سیگنال‌ها (Signals)

جنگو از سیگنال‌ها برای انجام عملیات هنگام رخ دادن رویدادهای خاص (مثل ذخیره مدل) استفاده می‌کند.

استفاده از کش (Cache)

برای بهبود عملکرد می‌توان از انواع کش (مانند Memcached) در پروژه استفاده کرد.

پیاده‌سازی تست

تست کردن کدها (unit test) در جنگو بسیار آسان است و با اجرای python manage.py test قابل استفاده است.

نتیجه‌گیری

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

اشتراک گذاری پست

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تبلیغاتی برای دستیابی به هدفتان

پشتیبانی

مشاوره تبلیغاتی رایگان