آموزش ساخت وبسایت با فریم ورک جنگو قسمت دوم

به نام خدا!

 یه عکس عادی از جنگو
یه عکس عادی از جنگو

خوب میریم سراغ قسمت بعدی آموزش جنگو که در این قسمت مباحث زیر رو بررسی میکنیم.

  • طراحی و گرفتن اولین ریسپانس
  • توضیح کوتاه راجب url ها
  • توضیح و بررسی تمپلیت ها در جنگو

حالا باید برای اولین ریسپانس باید فایل views.py رو در پروژمون باز کنیم که حاوی کد های زیر است:

from django.shortcuts import render
from django.http import HttpResponse 

# write your views here.

حالا باید یه فانشکن درست کنیم که عبارت Hello World رو بهمون برگردونه. برای این کار کد زیر رو بنویسید.

from django.shortcuts import render 
from django.http import HttpResponse   
def index(request):
    return HttpResponse( 'Hello World!')

حالا سایتمون رو رفرش کردیم، اما چرا هیچی نمی بینیم؟

خوب ، همونطور که حدس زدید ما هنوز url رو تعریف نکردیم و وقتی سایت رو باز میکنیم ارور 404 رو دریافت میکنیم.

حالا باید در فایل urls.py این فانکشن رو تعریف کنیم ، کد های زیر رو وارد پروژه کنید:

from django.contrib import admin
from django.urls import path 
from . import  views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.index,name='index')
]

توضیح کد:

خوب ما در واقع یک url خالی رو تعریف کردیم که در واقع همون آدرس اصلی سایت یا http://127.0.0.1:8000 هستش که بعد از لود سایت ارجاع داده میشه به فایل views.py که از این فایل فانکشن index رو برامون بار گذاری میکنه.

نکته : همانند مثال میبایستی view رو ایمپورت کنید.
نکته : نوشتن name برای path اجباری نیست اما نوشتنش فوق العاده کمک میکنه که در جلسه های آینده خواهیم گفت

حالا سایت رو رفرش کنید، تبریک میگم اولین ریسپانس خود رو دریافت کردید!
مبحث Template ها در جنگو
خب الان با خودتون فکر میکنید که چی میشد جای این نوشته به ما فایل html برگشت داده میشد؟
خب ، این موضوع فوق العاده راحته، برای انجام این کار ابتدا فولدری در دایرکت پروژه با نام template ایجاد کنید و بعد داخل آن فایلی با نام index.html ایجاد کرده و بعد فایل settings.py رو باز کنید. تکه کد زیر را داخل آن فایل پیدا کنید و فولدر رو به جنگو تعریف کنید.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

حالا بر میگردیم به فایل views.py و کد ها رو به این شکل تغییر میدیم:

from django.shortcuts import render 
from django.http import HttpResponse   
def index(request):
    return render(request, 'index.html')

توضیح کد:

خب ، ما فقط اومدیم و از فانکشن رندر استفاده کردیم تا یک صفحه ی html رو برامون برگردونه و نکته ی خاصی زیاد داخلش وجود نداره.

نکته : اگر فایل html رو داخل یک فولدر دیگه در فولدر template قرار دادید باید به این صورت آدرس دهی کنید.
('return render(request, 'folder/index.html
در واقع تمامی آدرس دهی ها از پوشه template صورت می پذیرد.
نکته : نوشتن request در فانشکن رندر ، ضروریست.

خب این قسمت هم تموم شد تا قسمت بعدی خداحافظ!?