深度分析Django基础教程之Django请求和响应之Response对象
嘿,Django侠客们!今天咱们不聊宏大的架构,也不扯复杂的模型,就来深入唠一唠那个你每天都在用,但可能从未真正“看透”的伙计——Response对象。
想象一下这个场景:你走进一家餐厅(你的网站),对服务员(Django)说:“嘿,给我来份宫保鸡丁,多加花生!”(这就是一个HTTP请求)。后厨(你的视图函数)一阵叮当乱响,把菜给你做好了。那么问题来了,这盘菜怎么端到你面前?是用精致的盘子?还是直接用锅?或者服务员跑过来说:“先生,宫保鸡丁卖完了,要不您试试我们的水煮鱼?”(这就是重定向)。
这个“端菜”的动作,在Django世界里,就是Response对象的使命。 它决定了数据以何种姿态、何种格式呈现在用户的浏览器上。今天,我们就来把这个“端菜艺术”扒得底裤都不剩!
第一章:Response家族“全家福”——不止一个“回”字
很多人以为,视图函数里返回个字符串就行了。Too young, too simple! Django为我们准备了一整套“ Response 全家桶”,各有各的妙用。
1. 老大哥:HttpResponse——最基础的“白盘子”
这是所有Response的根基,最直接,也最灵活。它的工作就是:给你一块白板,你爱写啥写啥。
from django.http import HttpResponse
def my_view(request):
# 最简单的,返回一段文本
return HttpResponse("欢迎来到我的小吃摊!")
# 你甚至可以手动设置状态码,比如玩个彩蛋
# return HttpResponse("页面飞走了~", status=404)
核心技能点:
content: 响应的内容,可以是字符串,也可以是字节数据。status: HTTP状态码。200(成功)、404(找不到)、500(服务器错误)……全凭你指挥。content_type: 告诉浏览器“我端上来的是什么菜”。默认为'text/html',你还可以设为'text/plain'(纯文本)、'application/json'(JSON数据)等。
适用场景: 当你需要完全掌控输出内容,或者返回非HTML内容(比如CSV文件、纯文本协议)时,老大哥就该出场了。
2. 文艺青年:JsonResponse——专供API的“精致摆盘”
现在是前后端分离的时代,前端动不动就跟你耍JSON。每次都手动 json.dumps() 再设置 content_type 也太麻烦了!于是,JsonResponse这位文艺青年闪亮登场。
from django.http import JsonResponse
def api_view(request):
data = {
'name': '阿D',
'age': 18,
'hobbies': ['coding', 'reading', 'sleeping']
}

最低0.47元/天 解锁文章
401

被折叠的 条评论
为什么被折叠?



