1. 程式人生 > >Django中project下的url引入(include)app下的url

Django中project下的url引入(include)app下的url

今天進行django的回爐,發現django官方文件中開始建立django專案時候,專案的url除了在專案目錄下的urls.py中建立外,還引進(include)了app中的urls.py,這怎麼理解?

官方文件中給出了:

Whenever Django encounters include(), it chops off whatever part of the URL matched up to that point and sends the remaining string to the included URLconf for further processing.

也就是說,在接收http請求時,url首先與專案下根目錄下的urls.py中的欄位進行比較,如果有符合的,再從該條目中include的url進行深度匹配。

有點類似於路由器ip。

看個例子:

目錄:

mysite:

    -mysite

        -urls.py

    -myapp

        -views.py

        -models.py

        -urls.py

首先,myapp/urls.py

# coding:utf8
from django.conf.urls import include, url
import views
urlpatterns = [
    url(r'^$', views.index,name='index'),
    url(r'login',views.login,name='login'),
]

然後,mysite/urls.py

from django.conf.urls import include, url
from django.contrib import admin


urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^cislab/',include('cislab.urls')),
]

進行訪問,/cislab/---對應index

/cislab/login ----對應login。