URLها و آدرسی دهی در جنگو

جنگو

سلام

در این مرحله قصد داریم تا با کلیک روی نام بورد‌ها در صفحۀ اصلی، تاپیک‌های مختلف از آن بورد نمایش داده شود.

برای اینکار باید فایل urls.py از فولدر لیبوگرام را ویرایش کنیم.

Libogram/urls.py

from django.conf.urls import url
from django.contrib import admin

from boards import views

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^boards/(?P<pk>\d+)/$', views.board_topics, name='board_topics'),
    url(r'^admin/', admin.site.urls),
]

(نکتۀ مهم اینکه تغییرات بالا باعث ایجاد خطا در جنگو می شود و عادی است. بنابراین در این مرحله نمی توان پروژه را اجرا کرد.)

بخش URLها یکی از مهمترین مفاهیم در جنگوست. یک برنامه ممکن است از تعداد زیادی URL تشکیل شده باشد که این آدرس‌ها درون فایل urls.py قرار دارند. اما برای شروع باید آدرس همین فایل را هم به جنگو معرفی کنیم. به این فایل root URLconf می گویند و مسیر آن در فایل settings.py قرار دارد.

Libogram/settings.py

ROOT_URLCONF = 'Libogram.urls'

(به صورت پیش فرض این آدرس تنظیم شده و تنها در صورت لزوم نیاز به تغییر دارد.)

زمانی که کاربر یک آدرس را وارد می کند، جنگو به فایل urls.py می‌رود و اولین آدرسی که با آن هم‌خوانی داشته باشد را انتخاب می کند. سپس از روی آدرس و از پارمترهای تابع url به سراغ فایل viewای می رود که به عنوان دومین پارامتر در تابع url تنظیم شده و در صورتی که آدرس را پیدا نکند خطای 404 می دهد. ساختار تابع url به این شکل است:

def url(regex, view, kwargs=None, name=None):
# ...

توضیحات:

  • regex: ریجکس یا همان regular expression برای تطبیق الگوهای URL به string است. ضمناً ریجکس‌ها شامل پارامترهای GET یا POST نمی‌شوند. یعنی در آدرس http://127.0.0.1:8000/boards/?page=2 صرفاً بخش مربوط به /boards/ پردازش می شود.
  • view: از این تابع برای تطبیق درخواست‌های کاربر با URLها استفاده می شود. همینطور می شود در آن از توابع conf.urls.include استفاده کرد. از این توابع برای فایل‌های urls.py که در محل دیگری قرار دارند، استفاده می‌شود. (بعداً توضیحات بیشتری ارائه می شود.)
  • Kwargs: برای ارسال ورودی‌ها به ویوی نهایی استفاده می شود. از این مورد برای اختصاصی‌سازیِ ویوهای reusable استفاده می شود که البته معمولاً کاربردی ندارد.
  • Name: یک شناسۀ یکتا برای URLهاست. با این کار به سادگی و صرفاً با تغییر ریجکس می توانیم یک آدرس را در تمام پروژه تغییر دهیم.

ترجمۀ اختصاصی توسط تمدن

 

مطلب بعدی: URLهای ابتدایی و ساده

مطلب قبلی:معرفی Django Admin

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جنگو
پیکربندی گواهینامۀ https

سلام حالا می خواهیم برنامۀ خودمان را با گواهینامۀ https امن کنیم. ساده ترین کار برای انجام آن Let’s Encrypt است. قبل از Let’s Encrypt هرگز تنظیمات https به این راحتی نبوده و مهمتر اینکه اینکار کاملاً رایگان است. آن ها راه حلی به نام certbot را ارائه داده اند …

جنگو
پیکربندی سرویس ایمیل

سلام یکی از بهتر سرویس دهنده های ایمیل Mailgun با قابلیت ۱۲ هزار ایمیل رایگان در ماه است. به صورت رایگان ثبت نام کنید. برای اینکار باید آن را با سرویس دهندۀ دامین خود تنظیم کنید که در این آموزش از tamadon.org استفاده شده است. حالا اولین رکورد DNS را …

جنگو
پیکربندی NGINX

سلام کار بعدی که قرار است انجام شود؛ تنظیمان Nginx به شکلی است که پاسخگویی و سرویس دهی مربوط به فایل های استاتیک را خود انجام دهد و سایر درخواست ها را به Gunicorn بفرستد. یک فایل پیکربندی با نام boards را درون /etc/nginx/sites-available/ و با محتوای زیر اضافه می …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.