django 幾種reponse方式

今天看了下django-restful 里面的response,順便也把 django response 整理一下

django response

1缘圈、from django.http import HttpResponse

from django.http import HttpResponse
def index(request):
    data_str = '這是測試文本'
    return HttpResponse(content=data_str)
"""
注意,
這里的 content 只能是字符串脖咐,
class HttpResonse 繼承于 class HttpResponseBase
class HttpResponseBase初始化參數(shù)如下:
def __init__(content_type=None, status=None, reason=None, charset=None):
"""

2、from django.http import JsonResponse

from django.http import JsonResponse
def index(request):
    data_dict = {
        'message': '這是測試文本'
    }
    return JsonResponse(data=data_dict)
"""
注意,
這里的 data 默認只能是 dict 類型黔龟。
class JsonResponse cl繼承于 class HttpResonse
class JsonResponse 初始化參數(shù)如下:
def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,json_dumps_params=None, **kwargs):
data的類型只能是dict,list
如果data想為list類型滥玷,則safe必須為False
"""

3氏身、django.http 中的其他reponse類

from django.http import StreamingHttpResponse
from django.http import FileResponse
from django.http import HttpResponseRedirectBase
from django.http import HttpResponseRedirect
from django.http import HttpResponsePermanentRedirect
from django.http import HttpResponseNotModified
from django.http import HttpResponseBadRequest
from django.http import HttpResponseNotFound
from django.http import HttpResponseForbidden
from django.http import HttpResponseNotAllowed
from django.http import HttpResponseGone
from django.http import HttpResponseServerError
from django.http import Http404

4、from django.template import SimpleTemplateResponse

from django.template import SimpleTemplateResponse
def index(request):
    data_dict = {'message': '這是測試文本'}
    return SimpleTemplateResponse('test.html', data_dict)
"""
注意惑畴,
這里的 SimpleTemplateResponse里面是沒有request對象的蛋欣,簡單說就是,在test.html中是不可以通過模板語法使用request對象
這里一定要配置好 templates 的路徑是正確的
"""

5如贷、from django.http import TemplateResponse

from django.template import TemplateResponse
def index(request):
    data_dict = {'message': '這是測試文本'}
    return TemplateResponse(request, 'test.html', data_dict)
"""
注意陷虎,
這里的 TemplateResponse request 和 template參數(shù)是必傳項
可以在html頁面直接使用reqeust對象
"""

6到踏、from django.shortcuts import render

from django.shortcuts import render
def index(request):
    data_dict = {'message': '這是測試文本'}
    return render(request, 'test.html', data_dict)
"""
注意,
shortcuts的意思是‘快捷方式’
因此尚猿,django為了方便我們使用窝稿,提供了def render(): 方便我們使用
def render(request, template_name, context=None, content_type=None, status=None, using=None):
講真的,我沒感覺方便在什么地方凿掂,和直接使用class區(qū)別不大
"""
django-restful response

1伴榔、from rest_framework.response import Response

from rest_framework.response import Response
def index(request):
    data_dict = {'message': '這是測試文本'}
    return Response(data=data_dict)
#  return Response(data=data_dict, template_name='test.html')

"""
注意,
這里涉及到settings的配置
resetful默認配置如下:
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer'
    ]
}
"""
在瀏覽器訪問127.0.0.1:8080庄萎,可以直接進入到restful 提供的api調(diào)試界面
在postman訪問127.0.0.1:8080踪少,會直接返回接口的返回結(jié)果

如果在瀏覽器訪問時 不想出現(xiàn)api調(diào)試界面,想直接查看返回接口的返回結(jié)果糠涛,
那么要把配置里面的 "rest_framework.renderers.BrowsableAPIRenderer" 去掉

return Response(data=data_dict, template_name='test.html')的意思是援奢,可以返回自己寫的模板頁面
但要在settings里面加上"rest_framework.renderers.TemplateHTMLRenderer"
不然你加template_name參數(shù)是沒有任何效果的

參考:
django:https://docs.djangoproject.com/zh-hans/2.2/ref/request-response/#httpresponse-objects
django-resetful: https://www.django-rest-framework.org/api-guide/renderers/
other blogs: https://www.cnblogs.com/xibuhaohao/p/10192351.html

[完]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脱羡,隨后出現(xiàn)的幾起案子萝究,更是在濱河造成了極大的恐慌免都,老刑警劉巖锉罐,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绕娘,居然都是意外死亡脓规,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門险领,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侨舆,“玉大人,你說我怎么就攤上這事绢陌“は拢” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵脐湾,是天一觀的道長臭笆。 經(jīng)常有香客問我,道長秤掌,這世上最難降的妖魔是什么愁铺? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮闻鉴,結(jié)果婚禮上茵乱,老公的妹妹穿的比我還像新娘。我一直安慰自己孟岛,他們只是感情好瓶竭,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布督勺。 她就那樣靜靜地躺著,像睡著了一般斤贰。 火紅的嫁衣襯著肌膚如雪玷氏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天腋舌,我揣著相機與錄音盏触,去河邊找鬼。 笑死块饺,一個胖子當著我的面吹牛赞辩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播授艰,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辨嗽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淮腾?” 一聲冷哼從身側(cè)響起糟需,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谷朝,沒想到半個月后洲押,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡圆凰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年杈帐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片专钉。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挑童,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出跃须,到底是詐尸還是另有隱情站叼,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布菇民,位于F島的核電站尽楔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏玉雾。R本人自食惡果不足惜翔试,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望复旬。 院中可真熱鬧垦缅,春花似錦、人聲如沸驹碍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怔球,卻和暖如春嚼酝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背竟坛。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工闽巩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人担汤。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓涎跨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親崭歧。 傳聞我的和親對象是個殘疾皇子隅很,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 經(jīng)過對django的初步學習,我們已經(jīng)對后臺的基本流程以及django的運作有了一定的了解率碾,但是這還不足夠叔营,dja...
    coder_ben閱讀 3,830評論 8 34
  • (一)、啟動服務器 (二)所宰、創(chuàng)建數(shù)據(jù)庫表 或 更改數(shù)據(jù)庫表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星閱讀 5,660評論 0 17
  • 此段內(nèi)容簡要來自自強學堂的教程詳情請查詢自強學堂 一绒尊、 后臺的運作流程 接收request請求 處理數(shù)據(jù) 獲取請求...
    coder_ben閱讀 5,246評論 6 56
  • 綜述 設計一個web應用的URLs,你需要新建一個Python模塊來進行URL設置(URLconf)歧匈。這個模塊中純...
    低吟淺唱1990閱讀 360評論 0 0
  • 模板標簽除了幾個常用的垒酬,還真心沒有仔細了解一下砰嘁,看到2.0發(fā)布后件炉,翻譯學習一下。 本文盡量忠實原著矮湘,畢竟大神的東西...
    海明_fd17閱讀 2,004評論 0 5