Django之路由控制配置

2022-09-02 04:09:07 字數 3511 閱讀 7149

django即支援1.x版本的路由配置也支援2.x的路由配置

from django.contrib import admin

from django.urls import path,re_path

urlpatterns = [

path('admin/', admin.site.urls),

path('timer/', views.timer),

path('login/', views.login),

#year_archive(request,year)

re_path(r'^articles/([0-9])/$',views.year_archive),# 匹配成功之後會將匹配成功的內容傳入到year_archive函式中,在views定義函式時要接收兩個引數

re_path(r'^articles/([0-9])/([0-9])/$',views.month_archive)

]

注意:

請求的例子:

#走的是month_archive

# 走的是year_archive

# url有覆蓋效果,以最先匹配的為準

re_path(r'^articles/(?p[0-9])/(?p[0-9])/$',views.month_archive)
全域性中的urls.py

from django.contrib import admin

from django.urls import path,re_path,include

urlpatterns = [

path('admin/', admin.site.urls),

path('timer/', views.timer),

path('login/', views.login),

#^也可以寫具體應用名,只是訪問時也需要加上應用名,以^開頭說明不用去匹配前面的,直接噗呸include中的內容

]

應用中的urls.py

from django.contrib import admin

from django.urls import path,re_path,include

urlpatterns = [

re_path(r'^articles/([0-9])/$',views.year_archive),# 匹配成功之後會將匹配成功的內容傳入到year_archive函式中,在views定義函式時要接收兩個引數

re_path(r'^articles/(?p[0-9])/(?p[0-9])/$',views.month_archive)

]

在使用django 專案時,乙個常見的需求是獲得url 的最終形式,以用於嵌入到生成的內容中(檢視中和顯示給使用者的url等)或者用於處理伺服器端的導航(重定向等)。人們強烈希望不要硬編碼這些url(費力、不可擴充套件且容易產生錯誤)或者設計一種與urlconf 毫不相關的專門的url 生成機制,因為這樣容易導致一定程度上產生過期的url

在urls.py中

# 給url命名(別名)

path('login.html/', views.login,name='log'),

在login.html中:

re_path(r'^articles/([0-9])/$',views.year_archive,name='y_a')
def year_archive(request,year):

# 使用django.urls模組下的reverse模組進行反向解析

from django.urls import reverse

url = reverse('y_a',args=(year,))

# httpresponse返回的引數時一哥字串

return httpresponse("url:%s"%(year,url))

project的urls.py:

urlpatterns = [

]

urlpatterns = [

re_path(r'^index/', index,name="index"),

]

urlpatterns = [

re_path(r'^index/', index,name="index"),

]

from django.core.urlresolvers import reverse

def index(request):

from django.core.urlresolvers import reverse

def index(request):

這裡正規表示式匹配的數是以字串格式顯示的,在進行邏輯處理時需要使用int去更改他的格式,使用path可以中int:可以進行直接轉換成int型別

urlpatterns = [

re_path(r'^articles/([0-9])/$',views.year_archive,name='y_a'),

path("articles//",views.year_archive,name='y_a')

]

path轉化器:

django預設支援以下5個轉換器

例子:

# 將該類寫在應用程式下面的convertrs.py中(編碼規範,非強制要求)

# 可以在該類中對資料進行複雜的邏輯操作

class fourdigityearconverter:

regex = '[0-9]'

def to_python(self, value):

return int(value)

def to_url(self, value):

return '%04d' % value

使用register_converter 將其註冊到url配置中:

from django.urls import register_converter, path  

from . import converters, views

# 註冊到url配置中,並且將給該類命名

register_converter(converters.fourdigityearconverter, 'yyyy')

urlpatterns = [

path('articles/2003/', views.special_case_2003),

path('articles//', views.year_archive),

...

]

使用方法與預設的轉換器一樣

Django路由控制

url配置 urlconf 就像django所支撐 的目錄,它的本質是url與要為該url呼叫的檢視函式之間的對映表 你就是以這種方式告訴django,對於客戶端發來的某個url呼叫哪一段邏輯 對應執行 典型例子 from django.urls import path urlpatterns pa...

Django 之路由篇

django 之檢視篇 django 之 models models 模型 資料表關係 django 之模板篇 參考資料 pip install django 1.8 路由需要關注兩點 接受的url是什麼,即如何使用re對傳入url進行匹配 已知url匹配到哪個處理模組 url匹配規則 正則以r開頭...

django之路由層

1.django中urls.py負責url的路由分發urlpatterns url r admin admin.site.urls url的第乙個引數實際為乙個正規表示式,第二個引數為檢視函式。瀏覽器訪問時,會遍歷該列表,匹配到則終止,不再往下匹配。當使用者訪問的url不存在時,django會嘗試將...