07
مهجنگو (Django) یک چارچوب وب قدرتمند و محبوب برای توسعهی برنامههای وب با زبان برنامهنویسی پایتون است. این فریمورک بهدلیل سادگی، انعطافپذیری و قابلیتهای گستردهاش، به یکی از ابزارهای اصلی توسعهدهندگان وب تبدیل شده است. جنگو از معماری Model-View-Controller (MVC) پیروی میکند، اما در جنگو این معماری با نام Model-View-Template (MVT) شناخته میشود. در این مقاله، به بررسی جامع برنامهنویسی با جنگو، مزایا، معایب و نحوهی شروع کار با آن میپردازیم.
جنگو در سال 2003 توسط آدریان هولواتی و سیمون ویلیسون در شرکت Lawrence Journal-World توسعه داده شد. هدف اصلی از ایجاد جنگو، تسهیل فرآیند توسعهی برنامههای وب پیچیده و پرترافیک بود. در سال 2005، جنگو به صورت متنباز (Open Source) منتشر شد و از آن زمان تاکنون، جامعهی بزرگی از توسعهدهندگان به بهبود و گسترش آن کمک کردهاند.
سادگی و سرعت توسعه: جنگو با ارائهی ابزارها و کتابخانههای از پیش ساختهشده، فرآیند توسعهی وب را تسریع میکند. این ویژگی به توسعهدهندگان اجازه میدهد تا بر روی منطق کسبوکار تمرکز کنند و زمان کمتری را صرف نوشتن کدهای تکراری کنند.
امنیت: جنگو بهطور پیشفرض از بسیاری از آسیبپذیریهای رایج وب مانند تزریق SQL، حملات XSS و CSRF جلوگیری میکند.
مقیاسپذیری: جنگو بهدلیل معماری ماژولار و قابلیتهای پیشرفتهاش، برای توسعهی برنامههای وب بزرگ و پیچیده مناسب است.
جامعهی بزرگ و مستندات غنی: جنگو دارای جامعهی بزرگی از توسعهدهندگان است که به طور فعال در بهبود و گسترش آن مشارکت میکنند. همچنین، مستندات جامع و دقیق جنگو، یادگیری و استفاده از آن را آسان میکند.
پشتیبانی از پایگاهدادههای مختلف: جنگو از پایگاهدادههای مختلف مانند PostgreSQL، MySQL، SQLite و Oracle پشتیبانی میکند.
یادگیری اولیه: با وجود سادگی نسبی، جنگو برای توسعهدهندگان تازهکار ممکن است پیچیده به نظر برسد، بهویژه اگر با مفاهیم MVC یا MVT آشنا نباشند.
سربار (Overhead): جنگو بهدلیل ارائهی قابلیتهای گسترده، ممکن است برای برنامههای کوچک و ساده، بیشازحد سنگین باشد.
انعطافپذیری محدود: در برخی موارد، جنگو ممکن است انعطافپذیری کمتری نسبت به فریمورکهای سبکتر مانند Flask داشته باشد.
جنگو از معماری Model-View-Template (MVT) پیروی میکند که مشابه معماری MVC است اما با تفاوتهایی جزئی:
Model: مدلها مسئول مدیریت دادهها و تعامل با پایگاهداده هستند. هر مدل معمولاً به یک جدول در پایگاهداده نگاشت میشود.
View: ویوها مسئول اجرای منطق کسبوکار و تعامل با مدلها هستند. در جنگو، ویوها درخواستهای کاربر را دریافت کرده و پس از پردازش، پاسخ مناسب را به کاربر ارسال میکنند.
Template: تمپلیتها مسئول نمایش دادهها به کاربر هستند. این بخش معمولاً شامل کدهای HTML و قالبهای نمایشی است.
ایجاد گروه امنیتی جدید:
در بخش “Security”، روی “Manage Groups” کلیک کنید.
در صفحه “Manage Groups”، روی “New Group” کلیک کنید.
فرم ایجاد گروه باز میشود. در این فرم، نام گروه و توضیحات مربوطه را وارد کنید.
مجوزهای مورد نظر را برای گروه انتخاب کنید و روی “Save” کلیک کنید تا گروه ایجاد شود.
تخصیص کاربران به گروههای امنیتی:
در صفحه “Manage Groups”، گروه مورد نظر را انتخاب کنید و روی “Edit” کلیک کنید.
در بخش “Users in this group”، کاربران مورد نظر را به گروه اضافه کنید.
روی “Save” کلیک کنید تا تغییرات ذخیره شود.
برای نصب جنگو، ابتدا باید پایتون روی سیستم شما نصب باشد. سپس میتوانید از دستور زیر برای نصب جنگو استفاده کنید:
pip install django
پس از نصب جنگو، میتوانید یک پروژه جدید ایجاد کنید:
django-admin startproject myproject
این دستور یک پروژه جدید با نام myproject
ایجاد میکند. ساختار پروژه به صورت زیر خواهد بود:
myproject/ manage.py myproject/ __init__.py settings.py urls.py asgi.py wsgi.py
برای اجرای پروژه، از دستور زیر استفاده کنید:
python manage.py runserver
با اجرای این دستور، سرور توسعهی جنگو روی http://127.0.0.1:8000
راهاندازی میشود.
در جنگو، هر پروژه میتواند شامل چندین اپلیکیشن باشد. برای ایجاد یک اپلیکیشن جدید، از دستور زیر استفاده کنید:
python manage.py startapp myapp
این دستور یک اپلیکیشن جدید با نام myapp
ایجاد میکند. ساختار اپلیکیشن به صورت زیر خواهد بود:
myapp/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
مدلها در فایل models.py
تعریف میشوند. به عنوان مثال، یک مدل ساده برای ذخیرهی اطلاعات کاربران میتواند به صورت زیر باشد:
from django.db import models class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField(unique=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name
پس از تعریف مدلها، باید تغییرات را به پایگاهداده اعمال کنید. این کار با استفاده از دستورات زیر انجام میشود:
python manage.py makemigrations python manage.py migrate
ویوها در فایل views.py
تعریف میشوند. به عنوان مثال، یک ویو ساده برای نمایش لیست کاربران میتواند به صورت زیر باشد:
from django.shortcuts import render from .models import User def user_list(request): users = User.objects.all() return render(request, 'myapp/user_list.html', {'users': users})
URLها در فایل urls.py
تعریف میشوند. به عنوان مثال، برای تعریف URL مربوط به ویوی user_list
، میتوانید کد زیر را به فایل urls.py
اضافه کنید:
from django.urls import path from . import views urlpatterns = [ path('users/', views.user_list, name='user_list'), ]
تمپلیتها در پوشهی templates
قرار میگیرند. به عنوان مثال، یک تمپلیت ساده برای نمایش لیست کاربران میتواند به صورت زیر باشد:
<!DOCTYPE html> <html> <head> <title>User List</title> </head> <body> <h1>User List</h1> <ul> {% for user in users %} <li>{{ user.name }} - {{ user.email }}</li> {% endfor %} </ul> </body> </html>
جنگو بهطور پیشفرض یک پنل ادمین قدرتمند ارائه میدهد. برای فعالسازی آن، ابتدا باید یک کاربر ادمین ایجاد کنید:
python manage.py createsuperuser
سپس میتوانید مدلهای خود را در پنل ادمین ثبت کنید. برای این کار، فایل admin.py
را به صورت زیر ویرایش کنید:
from django.contrib import admin from .models import User admin.site.register(User)
جنگو یک فریمورک وب قدرتمند و انعطافپذیر است که به توسعهدهندگان اجازه میدهد تا برنامههای وب پیچیده و مقیاسپذیر را به سرعت و با امنیت بالا توسعه دهند. با وجود برخی چالشهای اولیه در یادگیری، جنگو بهدلیل مستندات غنی و جامعهی بزرگ توسعهدهندگان، یکی از بهترین گزینهها برای توسعهی وب با پایتون است. اگر به دنبال یک فریمورک جامع و قابل اعتماد برای پروژههای وب خود هستید، جنگو قطعاً گزینهی مناسبی است.
در خبرنامه ما مشترک شوید و آخرین اخبار و به روزرسانی های را در صندوق ورودی خود مستقیماً دریافت کنید.
دیدگاه بگذارید