本文共 2013 字,大约阅读时间需要 6 分钟。
在Django开发中,请求和响应对象是管理应用程序状态和交互的核心工具。通过这些对象,Django能够有效地传递应用程序运行所需的各种信息。
HttpRequest
对象是Django接收客户端请求时所创建的对象,主要包含以下属性:
path_info
:返回用户访问的URL路径,不包含域名。例如:/music/bands/the_beatles/
method
:表示请求使用的HTTP方法,必须全大写。例如:GET
、POST
GET
:包含所有HTTP GET参数的字典对象。例如:request.GET['name']
可以获取GET请求中的查询参数。POST
:包含所有HTTP POST参数的字典对象。需要注意的是,POST
方法可以传递文件,因此文件信息将包含在FILES
属性中。body
:请求体,字节类型。POST
请求中的数据可以从body
中提取。cookies
:一个字典,包含所有客户端发送的cookie信息。files
:一个字典,包含所有上传文件的信息。只有在请求方法为POST
且表单使用enctype="multipart/form-data"
时才会包含文件数据。meta
:一个字典,包含所有HTTP首部信息。例如,HTTP_HOST
、HTTP_REFERER
等。user
:表示当前登录的用户。如果用户未登录,则为AnonymousUser
实例。session
:表示当前会话的字典对象。只有在启用Django会话功能时才可用。get_host()
:返回请求的原始主机地址。例如:"127.0.0.1:8000"
get_full_path()
:返回请求路径,包括查询字符串。例如:"/music/bands/the_beatles/?print=true"
get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
:用于获取签名过的cookie。支持设置默认值和时间戳校验。def upload(request): if request.method == "POST": filename = request.FILES["file"].name with open(filename, "wb") as f: for chunk in request.FILES["file"].chunks(): f.write(chunk) return HttpResponse("上传OK")
字符串响应:
from django.http import HttpResponseresponse = HttpResponse("Here's the text of the Web page.")response = HttpResponse("Text only, please.", content_type="text/plain")
设置响应头:
response = HttpResponse()response['Content-Type'] = 'text/html; charset=UTF-8'del response['Content-Type']
响应属性:
content
:响应内容charset
:响应内容编码status_code
:响应状态码JsonResponse
是 HttpResponse
的子类,专门用于生成JSON格式的响应。
from django.http import JsonResponseresponse = JsonResponse({'foo': 'bar'})print(response.content) # 输出:b'{"foo": "bar"}'
支持非字典数据类型:
response = JsonResponse([1, 2, 3], safe=False)
request.POST
和 request.FILES
是主要的数据来源。request.POST.getlist()
方法获取列表数据。request.user
可以区分登录用户和匿名用户。匿名用户的属性包括:id
为 None
,username
为空字符串等。通过合理使用 HttpRequest
和 HttpResponse
对象,开发者可以充分利用Django框架来管理应用程序的状态和用户交互,实现高效的Web开发。
转载地址:http://dnnj.baihongyu.com/