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會嘗試將...