در این مقاله، به بررسی موضوع معماری mvc در جنگو خواهیم پرداخت. در مقالات قبل توضیح دادیم که فریم ورک جنگو چیست؟
همچنین بررسی کردیم که کدام یک از جنگو یا جاوا اسکریپت برای کار ما بهتر هستند؟
در این راهنمای جامع که توسط کارشناسان سایت keralahost کرالاهاست جمع آوری شده است، در خصوص معماری mvc در جنگو و موضوع های مربوط به آن اطلاعاتی را ارائه می نماییم. سایت کرالاهاست، از معتبرترین منابع در این حوزه شناخته می شود.
معماری mvc در جنگو
معماری MVC یا Model-View-Controller یک الگوی طراحی است که منطق برنامه را به سه جزء به هم پیوسته جدا می کند. این جداسازی، به توسعه دهندگان اجازه می دهد تا برنامه های خود را به طور موثر مدیریت و مقیاس کنند.
در زمینه جنگو، یک چارچوب وب محبوب پایتون، معماری MVC پایه ای قوی برای ساخت برنامه های کاربردی وب پویا و قابل نگهداری فراهم می کند.
آشنایی با اجزای معماری mvc در جنگو
در جنگو، اجزای سنتی MVC اغلب به عنوان الگوی Model-Template-View (MTV) نامیده می شوند که یک تغییر جزئی از طراحی MVC معمولی است. بیایید هر یک از این اجزا را با جزئیات بررسی کنیم.
مدلها :
مدلها ساختار داده و رفتار اشیاء یک برنامه را تعریف میکنند. در جنگو، مدلها کلاسهای پایتون هستند که از کلاس Model پایه جنگو به ارث میبرند. این کلاس ها مسئول ایجاد و مدیریت جداول پایگاه داده، تعریف روابط بین جداول و مدیریت کلیه عملیات مربوط به داده ها هستند.
الگوها :
الگوها در جنگو معادل مولفه “View” در الگوی سنتی MVC هستند. آنها مسئول نمایش داده ها به کاربر هستند. قالب ها فایل های متنی هستند که ساختار و طرح بندی HTML را با استفاده از زبان قالب جنگو تعریف می کنند. این زبان برچسب ها و فیلترهایی را برای دستکاری داده ها و ادغام آن ها در خروجی نهایی HTML فراهم می کند.
Views:
در جنگو، view ها چسبی هستند که مدل ها و قالب ها را به هم متصل می کنند. آنها مسئول پردازش درخواست های HTTP ورودی، واکشی یا دستکاری داده ها از مدل ها و ارائه الگوهای مناسب با داده ها هستند. نماهای جنگو توابع پایتون هستند که یک شی درخواست را دریافت میکنند و یک شی پاسخ را برمیگردانند.
در صورت داشتن هر گونه سوال در این زمینه شما می توانید با کارشناسان سایت کرالاهاست در ارتباط باشید.
پیاده سازی معماری mvc در جنگو
برای درک چگونگی پیاده سازی معماری MVC در پروژه جنگو، اجازه دهید یک مثال ساده از یک برنامه وبلاگ ایجاد کنیم.
مرحله 1: یک پروژه و برنامه جنگو ایجاد کنید
ابتدا یک پروژه جنگو جدید و یک اپلیکیشن به نام “بلاگ” ایجاد کنید. دستورات زیر را اجرا کنید:
django-admin startproject myproject
cd myproject
python manage.py startapp blog
مرحله 2: مدل را تعریف کنید
در models.pyفایل برنامه “وبلاگ”، Post مدلی را تعریف کنید که نشاندهنده یک پست وبلاگ است:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
مرحله 3: یک الگو ایجاد کنید
در برنامه “blog”، یک پوشه جدید با نام “templates” و یک زیرپوشه به نام “blog” ایجاد کنید. در پوشه “blog” فایلی به نام “post_list.html” با محتوای زیر ایجاد کنید:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
مرحله 4: View را تعریف کنید
در views.pyفایل برنامه “blog”، یک تابع view ایجاد کنید که همه پست های وبلاگ را واکشی می کند و الگوی “post_list” را ارائه می دهد:
from django.shortcuts import render
from .models import Post
def post_list(request):
post_list = Post.objects.all()
return render(request, 'blog/post_list.html', {'post_list': post_list})
مرحله 5: الگوهای URL را پیکربندی کنید
در برنامه “blog”، یک فایل جدید به نام “urls.py” ایجاد کنید و الگوی URL را برای نمای “post_list” تعریف کنید:
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
در نهایت، الگوهای URL برنامه “وبلاگ” را در urls.pyفایل پروژه قرار دهید:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')),
]
مرحله 6: برنامه را آزمایش کنید
قبل از آزمایش برنامه، مهاجرت ها را برای ایجاد طرح پایگاه داده اعمال کنید:
python manage.py makemigrations
python manage.py migrate
اکنون سرور توسعه را اجرا کنید و به ” http://localhost:8000/blog/ ” بروید تا لیست پست های وبلاگ را ببینید:
python manage.py runserver
در صورت داشتن هر گونه ابهام در هر مرحله، با کارشناسان سایت کرالاهاست در تماس باشید.
مزایای استفاده از معماری MVC در جنگو
قابلیت استفاده مجدد:
اجزای MVC ماژولار و مستقل هستند و به توسعه دهندگان این امکان را می دهند تا از آنها در بخش های مختلف برنامه یا حتی در پروژه های دیگر استفاده مجدد کنند.
مقیاس پذیری:
معماری MVC از توسعه برنامه های کاربردی بزرگ و پیچیده با ارائه یک ساختار به خوبی سازماندهی شده که می تواند به راحتی مقیاس و گسترش یابد، پشتیبانی می کند.
آزمایش پذیری:
با جداسازی نگرانی ها، آزمایش اجزای جداگانه به صورت مجزا ساده تر می شود و منجر به کاربردهای قوی تر و قابل اعتمادتر می شود.
مفاهیم پیشرفته در معماری mvc در جنگو
در حالی که بخشهای قبلی یک نمای کلی از پیادهسازی اساسی معماری MVC در جنگو ارائه کردند، چندین مفهوم پیشرفته وجود دارند که میتوانند برنامههای جنگو شما را بیشتر ارتقا دهند.
استفاده از نماهای کلاس محور
جنگو همچنین از نماهای مبتنی بر کلاس پشتیبانی می کند که جایگزینی برای نماهای مبتنی بر عملکرد هستند. نماهای مبتنی بر کلاس با سازماندهی منطق view در کلاسهایی که از نماهای عمومی داخلی جنگو به ارث میبرند، انعطافپذیری بیشتری ارائه میدهند و قابلیت استفاده مجدد کد را تشویق میکنند.
به عنوان مثال، برای ایجاد یک نمای کلاسی برای لیست پست های وبلاگ، می توانید از جنگو استفاده کنید ListView:
from django.views.generic import ListView
from .models import Post
class PostListView(ListView):
model = Post
template_name = 'blog/post_list.html'
context_object_name = 'post_list'
برای استفاده از این نمای مبتنی بر کلاس، الگوی URL را در فایل برنامه «وبلاگ» بهروزرسانی کنید urls.py:
from django.urls import path
from .views import PostListView
urlpatterns = [
path('', PostListView.as_view(), name='post_list'),
]
کار با فرم ها
جنگو یک چارچوب فرمهای قوی ارائه میکند که مدیریت فرم ارسالی و اعتبارسنجی را ساده میکند. چارچوب فرم ها به طور یکپارچه با معماری MVC ادغام می شود و به شما امکان می دهد داده های فرم را در نماهای خود مدیریت کنید و عناصر فرم را در قالب های خود رندر کنید.
به عنوان مثال، به منظور ایجاد فرمی برای افزودن پست های وبلاگ جدید، می توانید از جنگو استفاده کنید ModelForm:
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
سپس، یک تابع view ایجاد کنید که هم نمایش فرم و هم پردازش فرم ارسالی را انجام می دهد:
from django.shortcuts import render, redirect
from .models import Post
from .forms import PostForm
def add_post(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('post_list')
else:
form = PostForm()
return render(request, 'blog/add_post.html', {'form': form})
در نهایت، یک الگو به نام “add_post.html” در پوشه “blog” ایجاد کنید:
میان افزار جنگو و چرخه درخواست- پاسخ
میانافزار یکی از ویژگیهای قدرتمند جنگو است که به شما امکان میدهد درخواستها و پاسخها را در سطح جهانی، قبل از رسیدن به نماها یا پس از خروج از نماها، پردازش کنید. از کلاسهای میانافزار میتوان برای پیادهسازی نگرانیهای متقابلی مانند احراز هویت، ذخیرهسازی حافظه پنهان و گزارشگیری استفاده کرد.
برای ایجاد یک میان افزار سفارشی، یک کلاس با متدهای مناسب مانند process_request() یا process_response تعریف کنید. سپس، کلاس میان افزار را به MIDDLEWAREتنظیمات موجود در فایل settings.py پروژه جنگو خود اضافه کنید.
اطلاعات کلی از معماری mvc در جنگو
بخش | خلاصه ی معماری mvc در جنگو |
مقدمه ای بر معماری mvc در جنگو | MVC (Model-View-Controller) یک الگوی طراحی است که منطق برنامه را به سه جزء به هم پیوسته جدا می کند و پایه ای قوی برای ساخت برنامه های وب پویا در جنگو فراهم می کند. |
آشنایی با اجزای معماری mvc در جنگو | اجزای MVC جنگو شامل مدلها (ساختار و رفتار داده)، قالبها (ساختار و طرحبندی) HTML و Views (مدلها و قالبها) را به هم متصل میکند. |
پیاده سازی معماری mvc در جنگو | پیاده سازی MVC در پروژه جنگو شامل ایجاد یک پروژه و برنامه، تعریف مدل، ایجاد الگوها، تعریف نماها و پیکربندی الگوهای URL است. |
مزایای استفاده از معماری mvc در جنگو | MVC تفکیک واضحی از نگرانیها ارائه میکند، قابلیت استفاده مجدد را ترویج میکند، از مقیاسپذیری پشتیبانی میکند و آزمایشپذیری را افزایش میدهد. |
مفاهیم پیشرفته | مفاهیم پیشرفته در معماری MVC جنگو شامل نماهای مبتنی بر کلاس، کار با فرم ها و استفاده از میان افزار است. |
نماهای کلاس محور | نماهای مبتنی بر کلاس با سازماندهی منطق view در کلاس هایی که از نماهای عمومی داخلی جنگو به ارث می برند، انعطاف بیشتری را ارائه می دهند و قابلیت استفاده مجدد کد را تشویق می کنند. |
کار با فرم ها | چارچوب فرم های جنگو، مدیریت ارسال فرم ها و اعتبار سنجی را ساده می کند و به طور یکپارچه با معماری MVC ادغام می شود. |
Django Middleware | میانافزار در جنگو امکان پردازش درخواستها و پاسخها را در سطح جهانی، پیادهسازی نگرانیهای متقاطع مانند احراز هویت، ذخیرهسازی حافظه پنهان و ثبتنام میدهد. |
نتیجه گیری
معماری MVC جنگو ویژگی ها و مفاهیم پیشرفته متعددی را ارائه می دهد که می تواند به شما در ایجاد برنامه های کاربردی وب پیچیده تر و کارآمدتر کمک کند. با کاوش در نماها، فرمها و میانافزار مبتنی بر کلاس، میتوانید از انعطافپذیری و قدرت جنگو برای ساخت برنامههای کاربردی با کیفیت بالا و قابل نگهداری، نهایت استفاده را ببرید.
به طور خلاصه، معماری MVC در جنگو، همچنین به عنوان الگوی MTV شناخته می شود، یک الگوی طراحی قدرتمند است که به توسعه دهندگان کمک می کند تا برنامه های وب سازمان یافته، مقیاس پذیر و قابل نگهداری ایجاد کنند. با درک و پیاده سازی این معماری، می توانید پروژه های جنگو با کیفیتی بسازید که مدیریت و گسترش آنها در آینده آسان تر خواهد بود.
اگر علاقه مند به کسب اطلاعات بیشتر در مورد معماری MVC جنگو هستید، با کارشناسان سایت کرالاهاست تماس بگیرید. تیم کارشناسان سایت کرالاهاست در هر مرحله به شما کمک می کنند.
در پایان توصیه می کنیم، ارسال ایمیل در جنگو، اعتبار سنجی در جنگو را مطالعه کنید.