ویوها/نماها (Django Views)
ویوها: مغز متفکر برنامه شما 🧠
ویوها در جنگو مثل کنترلکنندههای ترافیک هستن. وقتی کاربری یک صفحه رو درخواست میکنه، ویو تصمیم میگیره چه اطلاعاتی نمایش داده بشه، چه محاسباتی انجام بشه و در نهایت چه پاسخی به کاربر برگردونده بشه.
انواع ویوها
در جنگو دو نوع اصلی ویو داریم:
- Function-Based Views (FBV): ویوهای ساده که با توابع معمولی نوشته میشن. برای مبتدیها و کارهای ساده عالین.
- Class-Based Views (CBV): ویوهای پیشرفتهتر که با کلاسها نوشته میشن. برای کارهای پیچیده و کدهای قابل استفاده مجدد.
ساخت اولین ویو
بیایید یک ویوی خیلی ساده بسازیم:
# blog/views.py
from django.http import HttpResponse
def home(request):
# ویوی صفحه اصلی - سادهترین نوع ویو
return HttpResponse("سلام! به وبلاگ من خوش اومدید! 🎉")
def about(request):
# ویوی صفحه درباره ما
return HttpResponse("درباره ما
این یک وبلاگ ساده است.
")
پارامتر request چیه؟
شیء request یک گنجینه از اطلاعاته! توش میتونید پیدا کنید:
request.method: نوع درخواست (GET, POST, و...)request.path: مسیر درخواست شدهrequest.user: کاربر فعلی (اگر لاگین کرده باشه)request.GET: پارامترهای URL (مثل ?name=ali)request.POST: دادههای فرم ارسال شده
استفاده از render برای تمپلیت
به جای برگردوندن HTML خام، بهتره از تمپلیتها استفاده کنیم:
# blog/views.py
from django.shortcuts import render
def home(request):
# ویوی صفحه اصلی با تمپلیت
context = {
'title': 'صفحه اصلی',
'posts': ['پست ۱', 'پست ۲', 'پست ۳']
}
return render(request, 'blog/home.html', context)
HttpResponse برگردونه یا از render() استفاده کنه. اگر هیچکدوم رو برنگردونید، خطا میگیرید!
render یا HttpResponse یکی از رایجترین خطاهای مبتدیهاست. همیشه importها رو چک کنید!
🎯 تمرین عملی:
یک ویوی ساده بسازید که نام شما و تاریخ امروز رو نمایش بده. سپس اون رو به یک URL متصل کنید و در مرورگر تست کنید.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
🎯 تمرین عملی: ویوی صفحه خوشآمدگویی
در این تمرین، یک ویوی ساده میسازیم که اطلاعات کاربر رو نمایش بده:
- یک تابع ویو به نام
welcomeبنویسید که پارامترrequestرو بگیره - یک دیکشنری
contextبسازید که شامل نام کاربر، تاریخ امروز و یک پیام خوشآمدگویی باشه - از
renderاستفاده کنید تا یک تمپلیت به نامwelcome.htmlرو نمایش بدید
راهنمایی: از datetime برای تاریخ و از request.user برای اطلاعات کاربر استفاده کنید.
from django.shortcuts import render
from datetime import datetime
def welcome(request):
# ساخت context با اطلاعات کاربر
user_name = request.user.username if request.user.is_authenticated else 'مهمان'
current_date = datetime.now().strftime('%Y/%m/%d')
message = f"خوش آمدید {user_name}! امروز {current_date} است."
context = {
'user_name': user_name,
'current_date': current_date,
'message': message
}
# استفاده از render برای نمایش تمپلیت
return render(request, 'welcome.html', context)
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.