上一节我们了解了客户端的请求,这一节我们来看看服务器的返回,看看除了正常返回一个网页,我们还可以有哪些个性化的操作。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
文章目录
操作环境
先总结下我的操作环境:
Centos 7
Python 3.7
Pycharm 2019.3
Django 2.2
因为Django长期支持版本2.2LTS和前一个长期支持版本1.11LTS有许多地方不一样,需要小心区分。
HttpResponse
前面了解的HttpRequest对象是Django帮我们自动创建的,但是返回的HttpResponse对象需要用户自己创建,用户需要确保每个view函数返回的都是一个HttpResponse对象。
经过前面几节,我们已经接触了两种服务端view函数返回HttpResponse对象的方法
- 直接利用HttpResponse方法
- 调用模板进行渲染,或者直接用render方法一步到位
render
方法的三个参数如下
- request - 上一小节讲的HttpRequest对象
- template_name - templates下面的h5模板文件
- context - 传递到模板的数据,是一个字典
构造函数
先看看HttpResponse对象的构造函数,官方文档给出的定义如下
HttpResponse.__init__(content=b'', content_type=None, status=200, reason=None, charset=None)
- content
传递一个string进去做为返回的内容 - content_type
是一个MIME类型,浏览器通过这个类型选择打开文件的程序,同时还添加了一个编码类型,默认是text/html; charset=utf-8
MIME(Multipurpose Internet Mail Extensions)和文件的扩展名一样,只是便于选择默认打开程序的,并不会决定文件的内容
- status
状态码,状态码也和实际是否成功返回无关,例如成功返回网页也可以修改默认的200为404 - charset
编码类型,如果不指定就从前面的content_type提取
属性和方法
除了构造函数,还有很多的属性和方法可以用来做个性化。
常用的几个属性如下
- HttpResponse.content
- HttpResponse.charset
- HttpResponse.status_code
常用的几个方法如下
- HttpResponse.write()
- HttpResponse.flush()
- HttpResponse.set_cookie()
- HttpResponse.delete_cookie()
用一个简单实例来实际感受下。
新建一个叫Three
的应用,然后创建路由规则和对应的view函数如下
urlpatterns = [
path('test/',views.test, name='test'),
]
def test(request):
response = HttpResponse()
response.content = '<h1>This is a gr