【Django 011】Django2.2视图函数详解(三):HttpResponse和JsonResponse以及重定向和反向解析详解

上一节我们了解了客户端的请求,这一节我们来看看服务器的返回,看看除了正常返回一个网页,我们还可以有哪些个性化的操作。

我是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值