تعریف Views
همانطور که پیشتر شرح آن رفت، در جنگو، viewها توابع پایتون یا همان فانکشنها هستند که یک درخواست URL را به عنوان پارامتر دریافت میکنند و یک پاسخ HTTP را بر میگردانند و یا استثنایی مانند 404 ایجاد میکنند.
در حقیقت منطق این که چه چیزهایی و به چه نحوی به عنوان پاسخ برگردانده شوند، در داخل viewها مشخص میشود.
بهصورت اجمالی، ساختار و نحوه عملکرد یک اپ داخل یک پروژه را میبایست طی فرآیند زیر را طراحی نماییم.
❶ ابتدا view مورد نیاز برای اپلیکیشن رو میسازیم.
❷ سپس برای هر view یک الگوی URL تعریف میکنیم.
❸ در نهایت برای رندر کردن پاسخهایی که توسط viewها داده خواهند شد، تمپلیت HTML میسازیم.
هر view باید به یک الگوی URL نگاشت شود. یک پروژه وب جنگو شامل viewهایی با وظایف و ماموریتهای متفاوت خواهد بود. توابع views بطور معمول، در فایلی جداگانه و اختصاصی برای هر app با نام views.py قرار میگیرند که در دایرکتوری خود app بصورت پیشفرض در زمان ایجاد app ساخته میگردد که به شکل زیر خواهد بود.
appName/views.py
from django.shortcuts import render
# Create your views here.
فایل views.py ایجاد شده را در این مرحله تنها برای ایجاد یک صفحه Home و مسیر آدرس home/
، بهصورت زیر ویرایش میکنیم.
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def homeFunc(request):
return HttpResponse("Hello World!")
در اینجا ما یک تابع view با عنوان homeFunc()
، ساختیم که پارامتر request
رو بهعنوان تنها پارامتر ورودی گرفته و عبارت !Hello World را با متد HttpResponse
بهعنوان پاسخ ارائه میکنند.
‼ در تمامی viewهای جنگو، پارامتر request
بهعنوان ورودی الزامی است (چه در viewهای فانکشنی به صورت مستقیم و چه در viewهای کلاسی از طریق متدهایی مانند GET
و POST
).
متد HttpResponse
یک مثال ساده در مورد نحوه ارسال پاسخ به مرورگر بدون نیاز به تمپلیت است. همانطور که ملاحظه میشود برای URL آدرس home/
، تابع مجزایی تعریف شد که در این مرحله برای سادهسازی تنها به نمایش عبارت Hello World!، خلاصه شده است.
اما چگونه میتوان view را فراخوانی کرد؟ خب، باید viewها را از طریق URLها فراخوانی کنیم. در بخش بعدی برای view که ساخته شد، الگوی URL مورد نیاز را خواهیم ساخت.