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