تعریف 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 مورد نیاز را خواهیم ساخت.