一个干净优雅的URL方案是高质量Web应用程序中的一个重要细节。Django可以让你自己设计URL,无论你想要什么,没有框架限制。为了给一个应用设计URL,你需要创建一个Python 模块,通常被称为URLconf(URLconfiguration)
。
这个模块是纯Python代码,是一个简单的Python模式(简单的正则表达式)到Python函数(您的视图)之间的映射。
一、Django是如何处理一个请求?
当用户从Django的站点请求页面时,Django系统遵循以下步骤来执行的Python代码:
-
首先Django确定要使用的根URLconf模块,通过
ROOT_URLCONF
来设置,具体在settings.py配置文件中。但是如果传入HttpRequest
对象具有urlconf
属性(由中间件设置),则其值将用于替换ROOT\_URLCONF
设置。
【个人理解】:比如在nginx、tomcat 中进行了 URL配置,则优先启用nginx 或 tomcat 中的配置
。 -
Django加载该Python模块并查找该变量
urlpatterns
。它是django.urls.path()
和(或)django.urls.re_path()
实例的序列(sequence)。 -
Django按顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止。
【个人理解】:优先匹配原则,另:nginx中可以做不同项目的通配,并且有优先级
。 -
一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的Python函数(或基于类的视图)。该视图会获得如下参数:
1.一个
HttpReques
t实例。
2. 如果匹配的正则表达式没有返回任何命名组,那么来自正则表达式的匹配将作为位置参数提供。
3.关键字参数由正则表达式匹配的任何命名组组成,由可选kwargs参数中指定的任何参数覆盖。django.urls.path\(\)、django.urls.re_path\(\)
。
- 如果没有正则表达式匹配,或者在此过程中的任何一点出现异常,Django将调用适当的错误处理视图。