Django基础之urls.py详解
URL分发器(路由配置文件)
在settings的配置文件中,设置了顶层的urls的分发器
ROOT_URLCONF = 'test_django.urls'
URL配置(URLconf)就像是 Django 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。URL的加载是从配置文件中开始。
urlpatterns的两种配置形式:
没有前缀的情况,使用的列表(推荐方式)
from django.conf.urls import url
from test import views
urlpatterns = [
url(r'^index/$', views.index),
]
有前缀的情况,使用patterns方法,过时的方法(Django1.9以前使用)
from django.conf.urls import url, patterns
from test import views
urlpatterns = patterns('',
(r'^index/$', views.index),
)
URL模式:
urlpatterns = [
url(正则表达式, view函数, 参数, 别名)
]
参数说明:
- 一个正则表达式字符串。
- 一个可调用对象,通常为一个视图函数或是一个元组/列表。
- 可选的要传递给视图函数的默认参数(字典形式 url(r'^index/', views.index, {'num': 2016}))。在视图函数中的request后也要有这个字典的键(def index(request, num):)
- 一个可选的name参数:结合模板方便管理
URL分发器,include函数
通常一个 URL 分发器对应一个 URL 配置模块,它可以包含多个URL模式,也可以包含多个其他URL分发器。通过这种包含结构设计,实现Django对URL的层级解析。
URL 分发器是 Django 实现 app 与项目解耦的关键。通常由 include 方法操作的 URL 配置模块,最终会被解释成为 URL 分发器。
示例:
项目下的urls.py:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/',admin.site.urls),
url(r'^app01/', include('app01.urls')), # include()函数的正则表达式不要有$
]
应用下的urls.py:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^index/$', views.index_app01),
]
views.py:
def index_app01(request):
return render(request, 'index_app01.html')
在浏览器的地址栏中输入:http://127.0.0.1:8000/app01/index/

为什么admin模块引入的时候没有使用include url(r’^admin/‘,admin.site.urls)
urls本身是一个方法,不需要include。具体可以查看源码
URL常见写法示例,正则表达式
url(r'^$', views.index)
url(r'^index/\d{2}/$', views.index)
url(r'^article/(?P<year>\d{4})/$', views.article)
url(r'^article/(?P<year>\d{4})/(?P<month>\d{2}) /$', views.article)

浙公网安备 33010602011771号