这篇文章我们来学习下Django中的Request对象和Response对象。
HTTP请求与Django Request对象
我们看下一个HTTP请求中有哪些需要我们注意的:
请求方法、headers、请求参数、cookies、请求端信息
上面这些在对应于Django Request对象的什么:
请求方法 – Request对象的method属性
客户端信息 – Request对象的META属性
Cookies – Request对象的COOKIES属性
请求参数 – Request对象中的QueryDict
1 | def helloworld(request): |
HTTP应答与Django Response对象
在HTTP应答中我们需要关注的是 状态码、应答内容、内容格式
状态码 – Response对象的status属性
应答内容 – Response对象的content属性
延伸的Response子类 – (JsonResponse、FileResponse)根据返回类型不同,选择不同的Response
1 | return HttpResponse(content='Hello Django Response', status=201) |
注意:在 JsonResponse 中 内容属性是 data 而不是 content
关于safe
属性:
如果safe参数设置为False,则可以是任何可JSON 序列化的对象。
如果设置为True则只能是Python的Dict对象类型。
我们看下的源码
1 | class JsonResponse(HttpResponse): |
序列化内部使用的还是json
的dumps
。当我们想自己写序列化类的时候,只需要指定
属性encoder
为我们自己写的序列化类就好了。
类别 Flask 框架的 jsonfy
实战:实现天气查询应用
通过Request和Response我们来实现一个天气查询的接口
首先我们注册一个 聚合数据 的账号。
根据接口文档我们写一个自己封装的天气查询接口:
1 | import json |
编写Django代码
1 | def weather(request): |