django返回對象Response

django返回對象Response

參考:https://www.cnblogs.com/huwei934/p/6978641.html

一、不調用模板

不使用模板,直接返回數據,如:

def test_response(request):
    return HttpResponse('this is response test!')

二、調用模板

from django.template import loader

def test_response(request):
    t1 = loader.get_template('index.html')
    context = {'h1': 'hello'}
    return HttpResponse(t1.render(context))

三、HttpResponse屬性

  • content:表示返回的內容,字符串類型
  • charset:表示response採用的編碼字符集,字符串類型
  • status_code:響應的HTTP響應狀態碼
  • content-type:指定輸出的MIME類型

四、HttpResponse方法

  • init :使用頁內容實例化HttpResponse對象
  • write(content):以文件的方式寫
  • flush():以文件的方式輸出緩存區
  • set_cookie(key, value=”, max_age=None, expires=None):設置Cookie
    • key、value都是字符串類型
    • max_age是一個整數,表示在指定秒數後過期
    • expires是一個datetime或timedelta對象,會話將在這個指定的日期/時間過期,注意datetime和timedelta值只有在使用PickleSerializer時纔可序列化
    • max_age與expires二選一
    • 如果不指定過期時間,則兩個星期後過期

五、簡寫函數

render(request,template_name,content=None,content_type=None,status=None,using=None)

  • render(request, template_name[, context])
  • 結合一個給定的模板和一個給定的上下文字典,並返回一個渲染後的HttpResponse對象
  • request:該request用於生成response
  • template_name:要使用的模板的完整名稱
  • context:添加到模板上下文的一個字典,視圖將在渲染模板之前調用它
from django.shortcuts import render
def test_response(request):
    return render(request, 'index.html', {'11': '1111'})

六、常見用法

1.返回json數據

HttpResponse

    data = {
        'test1': 1,
        'test2': 2,
        'test3': 3
    }
    return HttpResponse(json.dumps(data), content_type='application/json')

子類JsonResponse

def test_response(request):
    data = {
        'test1': 1,
        'test2': 2,
        'test3': 3
    }
    return JsonResponse(data)

2.寫入cookie

不帶模板寫入:

JsonResponse
def test_response(request):
    data = {
        'test1': 1,
        'test2': 2,
        'test3': 3
    }
    response = JsonResponse(data)
    response.set_cookie('test_cookie', "test")
    return response
HttpResponse
def test_response(request):
    data = {
        'test1': 1,
        'test2': 2,
        'test3': 3
    }
    response = HttpResponse(json.dumps(data), content_type='application/json')
    response.set_cookie('test_cookie', "test")
    return response

帶模板寫入:

render_to_response
from django.shortcuts import render, render_to_response

def test_response(request):
    response = render_to_response('index.html', {'test': 'hello'})
    response.set_cookie('test_cookie', 'set cookie')
    return response
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章