请求和响应
django框架是一个web应用框架。本质上它就是处理用户发起的请求,然后返回响应结果。请求,和响应就是框架中的数据流。
当页面被请求时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后Django加载适当的视图,将HttpRequest作为第一个参数传递给视图函数。每个视图负责返回一个HttpResponse对象。
HttpRequest对象
class HttpRequest
HttpRequest
类位于 django.http
模块中。
常用属性
HttpRequest.body
原始请求的body,格式是字节类型。
HttpRequest.method
代表请求中使用的http方法的字符串,保证是大写字母。例如
if request.method == 'GET':
do_something()
elif request.method == 'POST':
do_something_else()
HttpRequest.GET
一个类似字典的对象,包含所有给定的 HTTP GET 参数(查询参数)。
HttpRequest.POST
一个类似字典的对象,包含所有给定的 表单格式的HTTP POST 参数。
更多属性,请参考官方文档
HttpRequest.FILES
一个类似字典的对象,包含所有上传的文件。
请求参数类型
利用HTTP协议向服务器传参有几种途径?
- 查询字符串参数
- url中?后面的key=value形式的参数
- 在django中通过request.GET属性获取
- 请求体参数
- post方法的form表单
- 在django中通过request.POST属性获取
- json格式和put,patch,delete方法传递的form表单
- 在django中通过request.body属性获取
- 文件
- 上传的文件通过request.FILES属性获取
- post方法的form表单
- 路径参数
- 在django中通过路由规则传递给视图
HttpResponse对象
class HttpResponse
与 Django 自动创建的 HttpRequest
对象不同, HttpResponse
对象是你的责任。你写的每个视图都要负责实例化、填充和返回一个 HttpResponse
对象。HttpResponse
类位于 django.http
对象不同, HttpResponse
对象是你的责任。你写的每个视图都要负责实例化、填充和返回一个 HttpResponse
对象。HttpResponse
类位于 django.http
模块中。
用法
传入字符串
典型的用法是将页面的内容以字符串、或字节字符串的形式传递给 [HttpResponse
] 构造函数:
>>> from django.http import HttpResponse
>>> response = HttpResponse("Here's the text of the Web page.")
>>> response = HttpResponse("Text only, please.", content_type="text/plain")
>>> response = HttpResponse(b'Bytestrings are also accepted.')
但如果你想增量添加内容,你可以使用 response
作为一个类似文件的对象:
>>> response = HttpResponse()
>>> response.write("<p>Here's the text of the Web page.</p>")
>>> response.write("<p>Here's another paragraph.</p>")
设置头字段
使用HttpResponse.headers
设置和删除一个字段。
>>> response = HttpResponse()
>>> response.headers['Age'] = 120
>>> del response.headers['Age']
HttpResponse子类
Django 包含了许多 HttpResponse
的子类来处理不同类型的 HTTP 响应。像 HttpResponse
一样,这些子类位于 django.http
中。
JsonResponse对象
class JsonResponse(data,encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, kwargs)
一个HttpResponse
的子类,创建一个JSON编码的响应。其默认的 Content-Type
头设置为 application/json。
第一个参数 data
应该是 dict
实例。如果 safe
参数设置为 False
,它可以是任何 JSON 可序列化的对象。
用法
典型的用法
>>> from django.http import JsonResponse
>>> response = JsonResponse({'foo': 'bar'})
>>> response.content
b'{"foo": "bar"}'
序列化非字典对象
为了对 dict
以外的对象进行序列化,你必须将 safe
参数设置为 False
:
>>> response = JsonResponse([1, 2, 3], safe=False)
如果没有传递 safe=False
,将引发一个 TypeError
。
欢迎来到testingpai.com!
注册 关于