请求过程
step1
当用户在浏览器中输入 url 时,浏览器会生成请求头 (request head) 和请求体 (request body) 发给服务端。
- 请求头和请求体中会包含浏览器的动作 (action),这个动作通常为 GET 或者 POST;
step2 选择URLconf模块
url 经过 Django 中的 wsgi,再经过 Django 的中间件,最后 url 到过路由映射表。
Django 确定使用根 URLconf 模块。
- 通常,这是
ROOT_URLCONF设置的值, - 但如果传入
HttpRequest对象拥有urlconf属性(通过中间件设置)- 它的值将被用来代替
ROOT_URLCONF设置
- 它的值将被用来代替
举例 如果中间件(身份认证组件) 校对失败, 会修改url的请求路径
具体中间件介绍可以参考 juejin.cn/post/730191…
step3 正则匹配 url
Django 加载该 Python 模块并寻找可用的 urlpatterns 。它是 django.urls.path() 和 (或) django.urls.re_path() 实例的序列;
step4
Django 依次匹配每个 URL 模式,在与请求的 URL 匹配的第一个模式停下来;
我们使用
urls.py去定义 URL 路由映射,另外,在每一级 APP 下又有它们独立的urls.py。
step5 视图函数处理请求
视图函数根据客户端的请求查询相应的数据返回给 Django server 然后 Django 把客户端想要的数据做为一个字符串返回给客户端。
客户端浏览器接收到返回的数据,经过渲染后显示给用户;
step6
如果没有 URL 被匹配,或者匹配过程中出现了异常,Django 会调用一个适当的错误处理视图