django的视图响应类型

本文是北京理工大学嵩天老师云端入门课程的笔记,介绍了Django视图函数编写原则,它可返回多种内容并通过特定类表达响应。还阐述了Django的响应类型,如HttpResponse类及子类、JsonResponse类等,同时提及首页路由设置和请求类型判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章摘自北京理工大学嵩天老师云端入门系列课程,这里只是我个人的笔记。

视图函数编写原则

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

Django的响应类型

django.http包含所有响应类型
• HttpResponse类及子类 (共10个)
• JsonResponse类
• StreamingHttpResponse类
• FileResponse类

(1) HttpResponse类及子类

类型说明
HttpResponse主要反馈类型,父类,HTTP状态码默认为200
HttpResponseRedirect重定向,HTTP状态码为302
HttpResponsePermanentRedirect永久重定向,HTTP状态码为301
HttpResponseNotModified网页无改动,该类型无任何参数,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 : 响应的字符集

首页路由设置

参考代码:
1.全局路由指定
path(’’, msgviews.homeproc),
2.编写全局路由指定函数
def homeproc(request):

(2) JsonResponse类
JsonResponse(data)

  • data : 字典类型,返回的JSON类型数据
    def homeproc1(request):
    response = JsonResponse({‘key1’: ‘value1’})
    return response

(3) StreamingHttpResponse类-流式响应
StreamingHttpResponse(streaming_content)

  • streaming_content : 内容的迭代器形式,以内容流的方式响应

(4) FileResponse类
FileResponse(stream)

  • stream : 以流形式打开后的文件
def homeproc2(request):
	cwd = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
	response = FileResponse(open(cwd + "/msgapp/templates/PyLogo.png", "rb"))
	response['Content-Type'] = 'application/octet-stream'
	response['Content-Disposition'] = 'attachment;filename="pylogo.png"'
	return response 

Django请求类型的判断

• 路由不能判断HTTP请求的类型
• Django通过decorators在视图函数前进行基本判断,格式如下:
调库:django.views.decorators.http

from django.views.decorators.http import require_http_methods
@require_http_methods(["GET", "POST"])
def my_view(request):
####### I can assume now that only GET or POST requests make it this far
	pass

Django视图流式响应机制见下文

https://blog.youkuaiyun.com/qq_41663800/article/details/93379532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值