URLconf路由
一个干净优雅的URL方案是高质量Web应用程序中的一个重要细节。
Django可以让你设计URL,无论你想要什么,没有框架限制。
要为应用程序设计URL,您可以非正式地创建一个名为URLconf(URL配置)的Python模块。
这个模块是纯Python代码,是一个简单的Python模式(简单的正则表达式)到Python函数(您的视图)之间的映射。
1. Django是如何处理一个请求:
当用户从Django供电的站点请求页面时,系统遵循以下算法来确定要执行的Python代码:
- 首先Django确定要使用的根URLconf模块,通过
ROOT_URLCONF
来设置,具体在settings.py配置文件中。但是如果传入 HttpRequest对象具有urlconf 属性(由中间件设置),则其值将用于替换ROOT_URLCONF设置。 - Django加载该Python模块并查找该变量 urlpatterns。这应该是一个Python的django.conf.urls.url()实例列表。
- Django按顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止。
- 一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的Python函数(或基于类的视图)。
- 如果没有正则表达式匹配,或者在此过程中的任何一点出现异常,Django将调用适当的错误处理视图。
示例
以下是一个URLconf示例:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]
说明:
- 要从URL捕获一个值,只需将其括起来。
没有必要