urls.py
參考內(nèi)容http://www.cnblogs.com/liwenzhou/p/8271147.html
后臺根據(jù)urls.py文件的正則表達式來拆分對應(yīng)的目錄课蔬。基本格式
from django.conf.urls import url
urlpatterns = [
url(正則表達式, views視圖函數(shù)烙心,參數(shù)侣颂,別名),
]
* 正則表達式:一個正則表達式字符串
* views視圖函數(shù):一個可調(diào)用對象跨琳,通常為一個視圖函數(shù)或一個指定* * 視圖函數(shù)路徑的字符串
* 參數(shù):可選的要傳遞給視圖函數(shù)的默認參數(shù)(字典形式)
* 別名:一個可選的name參數(shù)
- 分組匹配
url(r'^canshu/([0-9]{4})/([0-9]{2})/$', views.canshu)
# 未知參數(shù)
def canshu(request, arg1, arg2):
print arg1 # 9999
print arg2 #33
return HttpResponse("ok")
- 分組命名匹配
url(r'^canshu/(?P<year>[0-9]{4})/(?P<name>[a-zA-Z]{2})/$', views.canshu)
def canshu(request, year, name):
print year # 9999
print name #33
return HttpResponse("ok")
注意:分組匹配和分組命名匹配兩種方式不能混用
- 多個app分流
默認新建的app下面是沒有路由模塊urls.py客扎,但是當(dāng)網(wǎng)站結(jié)構(gòu)增大的時候岳枷,我們需要將流量分開窿冯,即在每個應(yīng)用下新建自己的路由模塊。
工程/urls.py
from app01 import urls
url(r'^app01/', include(urls))
app01/urls.py # 二級路由模塊
url反向解析
當(dāng)urls.py文件中的路由改變時剧蹂,導(dǎo)致網(wǎng)頁需要重新修改声功。主要原因時跳轉(zhuǎn)是根據(jù)路由來實現(xiàn)的,當(dāng)頁面中的<a href="..." >寫死的時候宠叼,修改頁面會導(dǎo)致出錯先巴。本質(zhì)上就是給url匹配模式起別名其爵,然后用過別名拿到具體的URL路徑
1. 怎么起別名?
在url匹配模式中,定義name="別名"
2. 如何使用伸蚯?
1. 在模板語言里面使用:
{% url "別名" %} => 得到具體的URL路徑
2. 在視圖中如何使用:
from django.urls import reverse
reverse(name) => 得到具體的URL路徑
3. 如何傳參數(shù)摩渺?
1. 模板語言中:
{% url "別名" 2018 "nb" %}
2. 視圖函數(shù)中
傳位置參數(shù):reverse("別名", args=(2018, "nb"))
傳關(guān)鍵字參數(shù):reverse("別名" kwargs={"year": 2018, "title": "nb"})