在Django学习过程中,对于初学者来说,关于URL路由最为容易迷惑,本篇只针对该内容,做详细讲解。(Django版本的不同,url配置文件有所不同,以下为Django 2以上版本中)
Django如何处理请求
在了解学习URL路由转发之前,先了解一下Django是如何处理请求的。
当我们从Django web服务站点请求一个页面时,系统按照以下算法来确定执行哪段Python代码:
1. Django确定要使用的root URLconf模块。可以通过项目settings文件中配置ROOT_URLCONF(当然还有其他情况,配置的ROOT_URLCONF,另行考虑)。

通过项目settings文件中配置ROOT_URLCONF
2. Django加载Python模块并查找变量urlpatterns。这应该是一个django.url.path()和/或django.url.re_path()实例的序列。
3. Django会按顺序去遍历每个URL pattern,并在第一个匹配到请求的URL的pattern处停止。
4. 一旦其中一个URL pattern匹配,Django就会导入并调用给定的视图,该视图是一个简单的Python函数(或基于类的视图)。视图通过以下参数传递:
- HttpRequest的一个实例。
- 如果匹配的URL模式没有返回指定的组,那么正则表达式中的匹配将作为位置参数提供。
- 关键字参数由路径表达式匹配的任何命名部分组成,由可选的kwargs参数(django.url .path