Django的视图响应类型

视图函数编写原则

  • 视图函数接受HTTP请求并返回响应,可以放在任何地方,可以是任何功能
  • 视图函数可以返回Web文本、页面、重定向、错误、图片等任何内容
  • 视图函数通过HttpResponseJsonResponse等类表达并返回响应
  • 按约定,视图函数放在对应app中的views.py文件中

Django的视图响应类型 django.http包含所有的响应类型

  • HttpResponse类及子类 (共10个)
  • JsonResponse
  • StreamingHttpResponse
  • FileResponse

HttpResponse类及子类 (共10个)

类型说明
HttpResponse主要反馈类型,父类, HTTP状态码默认为200
HttpResponseRedirect重定向, HTTP状态码为302
HttpResponsePermanentRedirect永久重定向, HTTP状态码为301
HttpRe sponseNotModified网页无改动,该类型无任何参数, HTTP状态码为304
HttpResponseBadRequest不良响应, HTTP状态码为400
HttpResponseForbidden禁止访问, HTTP状态码为403
HttpResponseNotAllowed不被允许, HTTP状态码为405
HttpResponseGoneHTTP状态码为410
HttpResponseServerError服务器错误, HTTP状态码为500
HttpResponseNotFound404错误, HTTP状态码为404

HttpResponse( content , content_ type=None,status =200,charset=None)

  • content:拟返回的字符串
  • content_ .type : MIME格式的返回内容类型
  • status:响应状态码
  • charset:响应的字符集

看一下实例代码:在urls.py中定义一个路径以及方法。
在这里插入图片描述
随后使用httpresponse作为相应返回值的参数:导入相对应的HttpResponse
在这里插入图片描述
再者对于HttpResponse而言,这是一个类,可以使用类进行返回:如下代码所示:

def homeproc(request):
     response=HttpResponse()
     response.write("<h1>这是一个首页,具体功能请访问</h1>")
     response.write("<a href='./msggate'>链接</a>")
     response.write("<h2>结尾</h2>")
     return response

最后运行项目,在根目录下面会看到返回的页面:如下效果图所示:以上的俩段代码因为输出的html代码不同,但是基本差不多,
在这里插入图片描述
JsonResponse类及子类 (共10个)
JsonResponse返回的一个data是一个字典类型的json数据
如下代码所示:在urls文件中添加一个路径指向这个函数:在浏览器输出的时候就会出现一个字典类型的json数据

def homeproc1(resquest):
    json=JsonResponse({'key':'value'})
    return json

在这里插入图片描述
FileResponse类
以流的形式打开文件:使用以下方法:

def homeproc2(resquest):
    c=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    response=FileResponse(open(c+"/msgapp/templates/3.png","rb"))
    response['Content-Type']="application/octet-stream"
    response['Content-Disposition']='attachment;filename="123.png"'
    return response

在此,需要在templates目录下新加一个图片,如上:图片是3.png。
最后打开网址查看效果:当输入网址并回车后,会自动下载我们原先定义的图片,并且将下载的图片名定义成123.png
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值