Django HttpRequest对象核心用法详解

月亮慢半拍
月亮慢半拍
发布时间:2026-10-14 | 4人浏览过
原创

本文详细解析Django框架中HttpRequest对象的核心用法。内容涵盖URL路径参数(位置与关键字)、QueryDict对象的get与getlist方法、查询字符串处理、表单及非表单类型请求体的解析,以及请求头信息的获取。通过具体代码示例,帮助开发者掌握Django中处理HTTP请求的关键技术。

本文详细介绍Django框架中HttpRequest对象的具体用法,旨在为读者提供实用的参考指南。

1. URL路径参数

(1) 位置参数:需使用正则分组,且与视图函数中的参数顺序严格对应,不可随意调换位置。

示例如下:


url(r'^(\d+)/(\d+)/$', views.index)
def index(request, 参数1, 参数2):
...

(2) 关键字参数:允许参数顺序灵活调整,只要与视图函数中的关键字参数名称一致即可。


url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views.index)
def index(request, value2, value1):
...

2. QueryDict对象

HttpRequest对象的GET和POST属性均为QueryDict类型,该对象专门用于处理同一键对应多个值的情况。

(1) get方法:根据键获取值,若存在多个值,默认返回最后一个值。


get('键', 默认值)

(2) getlist方法:根据键获取所有值,并以列表形式返回。


getlist('键', 默认值)

3. 查询字符串Query String

请求路径中的查询字符串(格式如?k1=1&k2=v2…)可通过request.GET获取,返回值为QueryDict对象。注意,无论请求方式是GET还是POST,均可通过request.GET访问查询字符串。

示例如下:


# /get/?a=1&b=2&a=3
def get(request):
  a = request.GET.get('a')
  b = request.GET.get('b')
  alist = request.GET.getlist('a')
  print(a) # 3
  print(b) # 2
  print(alist) # ['1', '3']
  return HttpResponse('OK')

4. 请求体

(1) 表单类型Form Data:

可通过request.POST.get()方法获取。

(2) 非表单类型Non-Form Data:

对于非表单类型数据,Django不会自动解析。需先通过request.body获取原始数据,再根据具体的请求格式进行手动解析。

示例如下:


import json
def post_json(request):
  json_str = request.body # 获取请求体数据
  json_str = json_str.decode() # 解码,python3.6 无需执行此步
  req_data = json.loads(json_str) # 将json转为字典
  print(req_data['a']) # 获取字典值
  print(req_data['b'])
  return HttpResponse('OK')

5. 请求头

可通过request.META属性获取请求头信息,其返回类型为字典。

6. 其他

参数 描述
method 一个字符串,表示请求使用的HTTP方法,常用值包括:‘GET'、‘POST'。
use 请求的用户对象。
path 一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。
encoding 一个字符串,表示提交的数据的编码方式。
FILES 一个类似于字典的对象,包含所有的上传文件。

希望本文所述内容对大家基于Django框架的Python程序设计有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表