#基本格式
from django.conf.urls import
urlurlpatterns =[
url(正規表示式, views檢視函式,引數,別名),]#
引數說明
正規表示式:乙個正規表示式字串
views檢視函式:乙個可呼叫物件,通常為乙個檢視函式或乙個指定檢視函式路徑的字串
引數:可選的,要傳遞給檢視函式的預設引數(字典形式)
別名:乙個可選的name引數
#基本配置
from django.conf.urls import
urlfrom . import
views
urlpatterns =[
url(r
'^articles/2003/$
', views.special_case_2003),
url(r
'^articles/([0-9])/$
', views.year_archive),
url(r
'^articles/([0-9])/([0-9])/$
', views.month_archive),
url(r
'^articles/([0-9])/([0-9])/([0-9]+)/$
', views.article_detail),]#
注意事項
urlpatterns中的元素按照書寫順序從上往下逐一匹配正規表示式,一旦匹配成功則不再繼續。
若要從url中捕獲乙個值,只需要在它周圍放置一對圓括號(分組匹配)。
不需要新增乙個前導的反斜槓,因為每個url 都有。例如,應該是^articles 而不是 ^/articles。
每個正規表示式前面的'r
' 是可選的但是建議加上。
在python的正規表示式中,分組命名正規表示式組的語法是(?ppattern)
,其中name
是組的名稱,pattern
是要匹配的模式。
#這個實現與前面的示例完全相同,只有乙個細微的差別:捕獲的值作為關鍵字引數而不是位置引數傳遞給檢視函式。
from django.conf.urls import
urlfrom . import
views
urlpatterns =[
url(r
'^articles/2003/$
', views.special_case_2003),
url(r
'^articles/(?p[0-9])/$
', views.year_archive),
url(r
'^articles/(?p[0-9])/(?p[0-9])/$
', views.month_archive),
url(r
'^articles/(?p[0-9])/(?p[0-9])/(?p[0-9])/$
', views.article_detail),
]
#檢視函式中指定預設值
#urls.py中
from django.conf.urls import
urlfrom . import
views
urlpatterns =[
url(r
'^blog/$
', views.page),
url(r
'^blog/page(?p[0-9]+)/$
', views.page),]#
views.py中,可以為num指定預設值
def page(request, num="1"
):
pass
#include 其他的urlconfs
from django.conf.urls import
include, url
urlpatterns =[
url(r
'^admin/
', admin.site.urls),
url(r
'^blog/
', include('
blog.urls
')), #
可以包含其他的urlconfs檔案,還是先訪問源根資料夾下邊的urls
#分組匹配 --> 相當於給檢視函式傳遞位置引數
#分組命名匹配 --> 相當於給檢視函式傳遞關鍵字引數,和上邊的不能混著用
在需要url 的地方,對於不同層級,django 提供不同的工具用於url 反查:
#### 舉個例子
#urls.py
url(r'
^home
', views.home, name='
home
'), #
給我的url匹配模式起名為 home
url(r'
^index/(\d*)
', views.index, name='
index
'), #
給我的url匹配模式起名為index
#在模板裡面可以這樣引用:
#在views函式中可以這樣引用:
from django.urls import
reverse
reverse(
"index
", args=("
2018
", ))
#### 例子高階
#urls.py
from django.conf.urls import
urlfrom . import
views
urlpatterns =[
#...
url(r'
^articles/([0-9])/$
', views.year_archive, name='
news-year-archive'),
#...]#
在模板裡面可以這樣引用:
"">2012 archive
#在views函式中可以這樣引用:
from django.urls import
reverse
from django.shortcuts import
redirect
defredirect_to_year(request):
#...
year = 2006
#...return redirect(reverse('
news-year-archive
', args=(year,)))
#project中的urls.py
from django.conf.urls import
url, include
urlpatterns =[
url(r
'', include('
', namespace='
')),
url(r
'', include('
', namespace='
')),]#
from django.conf.urls import
urlviews '
urlpatterns =[
url(r
'^(?p\d+)/$
', views.detail, name='
detail')
]#from django.conf.urls import
urlviews '
urlpatterns =[
url(r
'^(?p\d+)/$
', views.detail, name='
detail')
]
#模板中使用:
#views中的函式中使用
v = reverse('
', kwargs=)
Django路由系統
urlpatterns path 要匹配的路徑 可以是正規表示式 檢視函式,引數,別名 1 正規表示式 乙個正規表示式字串 2 檢視函式 乙個可呼叫物件,通常為乙個檢視函式或乙個指定檢視函式路徑的字串 3 引數 要傳遞給檢視函式的預設引數 字典形式,可選 4 別名 乙個可選的name引數 1 在py...
Django路由系統
普通的url 函式 有傳遞引數的url django2以上版本,使用正規則要用re path,之前的版本使用url re path add w add 一樣功能 path add add re path r add2 p w p d add path add2 add2 路由分發 使用include...
django 路由系統
1.正規表示式的模糊匹配 2.分組匹配 相當於給檢視函式傳遞位置引數 3.分組命名匹配 相當於給檢視函式傳遞關鍵字引數 兩個不要混合使用 位置傳參 路由 url r book1 0 9 a za z views.book1 接收 位置引數 def book1 request,arg1,arg2 pr...