Django学习笔记之视图响应类型

视图函数编写原则

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

响应类型详解

(1)HttpResponse类及其子类:

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

HttpResponse:
HttpResponse(content , content_type = None , status = 200 , charset = None)
其中 content:拟输入的字符串 ; content_type:MIME格式的放回内容类型 ; status:响应状态码 ; charset:响应的字符
引用方式:from django.http import HttpResponse
举例:

def homeproc(request):
    response = HttpResponse()
    response.write("<h1>这是首页,具体功能请访问<a href='./msggate/'>这里</a></h1>")   #可忽略
    response.write("<h1>hhhhhhh</h1>")
    return response

实现效果:(Microsoft Edge)cloudms
(2)JsonResponse类

JsonResponse(data)

其中data是字典类型,返回Json数据类型
举例:

def homeproc2(request):
    response = JsonResponse( {'key':'value'})
    return response

实现效果:(在火狐浏览器下)
在这里插入图片描述

(3) streamingHttpResponse类

streamingHttpResponse(streaming_content)  #streaming_content是内容的迭代形式,以内容流的方式响应

详见https://blog.csdn.net/qq_42245189/article/details/99937712

(4) FileResponse类

FileResponse(stream)  #stream:以流的形式打开后的文件

举例:(需import os)

def homeproc3(request):
    cwd = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    response = FileResponse(open(cwd + "/msgapp/templates/chelsea-gray.jpg","rb"))   #随便找张图片
    response['Content-Type'] = 'application/octet-stream'   #用于指定文件类型
    response['Content-Disposition'] = 'attachment;filename="chelsea-gray.jpg"'   #用于指定下载文件的默认名称
    return response

关于os.path.dirname等相关操作参考https://blog.csdn.net/JOJOY_tester/article/details/54598713

Django请求类型的判断

路由不能判断Http请求的协议,Django通过decorators在视图函数前进行基本判断:

from django.views.decorators.http import require_http_methods
@require_http_methods(['GET','POST'])
def my_view(request):
    #只处理GETPOST方法,其他方法将被过滤
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值