Django请求处理过程

我们在Web浏览器中访问了http://127.0.0.1:8000/hello/,看到

“Hello World!”,这个过程是怎么运行的呢?

运行 python manage.py runserver 命令时

 manage.py脚本在内层mysite目录中寻找名为setting.py文件

这个文件保存着当前Django项目的配置。其中最重要的设置是
ROOT_URLCONF,它告诉 Django,网站的 URL 配置在哪个 Python 模块中。

settings.py 文件中包含 ROOT_URLCONF 设置,指向自动生成的urls.py 文件。打开 settings.py 文件

会看到下述设置:

ROOT_URLCONF = 'mysite.urls'

这个模块对应的文件是 mysite/urls.py

Django加载ROOT_URLCONF设置指定的URL配置,然后按顺序检查URL配置中的各个URL模式,依次与请求的URL比较,直到找到匹配的模式为止。

找到匹配的模式后,调用对应的视图函数,并把一个HttpRequest对象作为第一个参数传给视图,剩余的工作交给Django处理。

总结:

1. 请求 /hello/。
2. Django 查看 ROOT_URLCONF 设置,找到根 URL 配置。
3. Django 比较 URL 配置中的各个 URL 模式,找到与 /hello/ 匹配的那个。
4. 如果找到匹配的模式,调用对应的视图函数。
5. 视图函数返回一个 HttpResponse 对象。
6. Django 把 HttpResponse 对象转换成正确的 HTTP 响应,得到网页。
### Django HTTP 请求处理流程 当用户通过浏览器发起一个HTTP请求时,Django按照特定顺序处理这个请求直到响应返回给客户端。以下是详细的处理步骤: #### 中间件层 请求首先进入中间件组件,在这里可以对`HttpRequest`对象进行预处理或直接生成并返回`HttpResponse`对象[^1]。 #### 配置加载 在处理之前,必要的设置会被加载以确保环境配置正确无误[^1]。 #### 路由匹配 接着,系统依据项目的`urls.py`件来解析URL模式,并寻找合适的视图(View)函数负责实际业务逻辑的实现[^2]。 #### 视图前中间件 在调用目标视图之前,还会经过一轮额外的中间件——即所谓的“视图中间件”,这些中间件有机会再次修改请求数据甚至提前终止请求流而立即给出回应[^3]。 #### 执行视图函数 一旦上述阶段顺利完成,控制权交给具体的视图函数/类,它们可能涉及数据库查询(借助于模型管理器)、上下构建等工作。 #### 数据库交互 对于那些需要操作持久化存储的操作来说,所有针对数据库的动作都经由ORM映射后的模型及其关联的方法完成。 #### 渲染模板 (可选) 如果有HTML页面要生成的话,此时会准备相应的内容填充至指定模板内形成最终档结构。 #### 响应后中间件 无论是否有异常发生或是正常结束,最后都会触发一系列响应后中间件用于进一步加工即将发出的数据包[^4]。 #### 返回客户端 整个链条走完之后,形成的`HttpResponse`实例就会顺着网络通道回传给最初发来请求的那个终端设备上显示出来。 ```python def my_view(request): # 示例视图函数 context = {'message': 'Hello, world!'} return render(request, 'template.html', context) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值