سلام تا به اینجای کار برای هر صفحۀ HTML به صورت جداگانه کد زدیم و بعضی وقت ها هم کدهای تکراری استفاده کردیم. در اینجا می خواهیم یک صفحۀ اصلی (master page) بسازیم و بعد قسمت های یکتایی را به هر تمپلیت اضافه کنیم. فایلی با نام base.html درون فولدر …
سلام تمام پیچیدگی کار در آدرس دهی مربوط به بخش ریجکسهاست که در این بخش به صورت جدولی آمده است. لینک: https://simpleisbetterthancomplex.com/references/2016/10/10/url-patterns.html Primary Key AutoField Regex (?P<pk>\d+) Example url(r’^questions/(?P<pk>\d+)/$’, views.question, name=’question’) Valid URL /questions/934/ Captures {‘pk’: ‘934’} Slug Field Regex (?P<slug>[-\w]+) Example (r’^posts/(?P<slug>[-\w]+)/$’, views.post, name=’post’) Valid URL /posts/hello-world/ Captures …
سلام حالا می خواهیم صفحۀ مربوط به تاپیکهای یک بورد را کدنویسی کنیم. اولین کار این است که فایل 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), ] |
و حالا نوبت نوشتن تابع view است. boards/views.py
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
from django.shortcuts import render from .models import Board def home(request): # code suppressed for brevity def board_topics(request, pk): board = Board.objects.get(pk=pk) return render(request, 'topics.html', {'board': board}) |
در فولدر templates یک فایل جدید با نام topics.html می سازیم: templates/topics.html
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ |
{% load static %}<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{{ board.name }}</title> <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}"> </head> <body> <div class="container"> <ol class="breadcrumb my-4"> <li class="breadcrumb-item">Boards</li> <li class="breadcrumb-item active">{{ board.name }}</li> </ol> </div> </body> </html> |
صفحۀ مربوطه با …
سلام برای ساخت این آدرسها نیاز به هیچ کار خاصی نیست و کافی است که آدرس مورد نظر و ثابت خود را در فرمت زیر استفاده کنیم. برای مثال میخواهیم صفحهای با آدرس about ایجاد کنیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ |
from django.conf.urls import url from boards import views urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^about/$', views.about, name='about'), ] |
به همین ترتیب می توانیم آدرسهایی با عمق بیشتر بسازیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ |
from django.conf.urls import url from boards import views urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^about/$', views.about, name='about'), url(r'^about/company/$', views.about_company, name='about_company'), url(r'^about/author/$', views.about_author, name='about_author'), url(r'^about/author/vitor/$', views.about_vitor, name='about_vitor'), url(r'^about/author/erica/$', views.about_erica, name='about_erica'), url(r'^privacy/$', views.privacy_policy, name='privacy_policy'), ] |
همانطور …
سلام برای ساخت آدرسهای پویا استفاده می شود. برای مثال ساخت آدرس پروفایلها که در آن میخواهیم نام کاربر در آدرس قرار گیرد و او را به صفحۀ خود ارجاع دهد. مثل http://twitter.com/Libogram. برای این کار به شکل زیر عمل می کنیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ |
from django.conf.urls import url from boards import views urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^(?P<username>[\w.@+-]+)/$', views.user_profile, name='user_profile'), ] |
با توجه به اینکه گفته شد در …
سلام در این مرحله قصد داریم تا با کلیک روی نام بوردها در صفحۀ اصلی، تاپیکهای مختلف از آن بورد نمایش داده شود. برای اینکار باید فایل 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), ] |
(نکتۀ مهم اینکه تغییرات بالا باعث ایجاد خطا در جنگو می شود و عادی …