在項目文件中,urls.py文件目的是匹配用戶請求的url來執行對應的函數,格式以下:html
urlpatterns = [ url('admin/', admin.site.urls), url('^index/$', views.index,), url('^news/$', views.news), url('^download/$', views.download), ]
通常的分配只須要兩個參數,路徑和對應執行的函數,其餘兩個參數能夠不加。前端
url()的四個參數
第一個參數:
路徑字符串,使用正則匹配,常見於分頁和文章頁面。例:匹配4個數字 url(r'^index/[0-9]{4}/$', views.index) 當給匹配項添加()後url(r'^index/([0-9]{4})/$', views.index) ,會將該匹配項當作參數傳到views對應函數中,應爲def index(req, num):(參數名無限制,多個參數時按順序傳參)。也能夠設置爲有名參數,例:url(r'^index/(?P<name>[0-9]{4})/$', views.index) 這樣的話,views函數裏邊的形參只能是制定的名字 def index(req, name):。django
第二個參數:
匹配到以後須要執行的函數,固定格式。後端
第三個參數:
用處不大,詳見http://www.cnblogs.com/yuanchenqi/articles/6083427.html。app
第四個參數:
別名。顧名思義,在前端使用form表單驗證時,須要兩個參數,action和method,其中action是表單數據提交到的路徑是哪裏,通常狀況下action="/index/",可是此狀況有弊端,缺乏解耦,後端修改後前端也須要修改,因此別名用處就在於此。固定格式爲:name="home",前端格式爲:action={% url "home" %}。若是action="",默認將POST提交的數據給當前路徑。函數
app路由應用
項目較大時,可能有許多路由映射,不符合解耦規範,此時,在每一個app中建立urls.py,在全局urls.py 配置一下便可,以下:url
項目urls.py from django.contrib import adminfrom django.conf.urls import url from django.urls import include urlpatterns = [ url('admin/', admin.site.urls), url('^blog/', include('mysite.urls')), ]
app下的urls from mysite import views from django.conf.urls import url urlpatterns = [ url(r'news/$', views.index, name="home"), ]
本文參見:http://www.cnblogs.com/yuanchenqi/articles/6083427.html spa