Django学习笔记第三篇--关于响应返回
生活随笔
收集整理的這篇文章主要介紹了
Django学习笔记第三篇--关于响应返回
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、返回簡(jiǎn)單類型:
1 #1、返回簡(jiǎn)單字符串 2 #from django.http import HttpResponse 3 return HttpResponse("return string") 4 #2、返回json 5 return HttpResponse(json.dumps(response_data),content_type="application/json")二、返回文件類型:
1 #1、返回一個(gè)頁面 2 #from django.shortcuts import render 3 return render(request,"return.html")三、返回模板類型:
1 #1、返回模板類型 2 return render(request,"return.html",{"string":"test ok"})四、文件下載:
1 #1、簡(jiǎn)單流文件下載 2 return HttpRequest(fd.read()) 3 #相關(guān)字節(jié)控制: 4 response = HttpResponse(data, content_type='application/zip') 5 from urllib import parse 6 response['Content-Disposition'] = 'attachment;filename=' +parse.quote(z_name) 7 return response 8 #2、復(fù)雜的大型流文件下載: 9 def file_download(request): 10 def file_iterator(file_name, chunk_size=512): 11 with open(file_name) as f: 12 while True: 13 c = f.read(chunk_size) 14 if c: 15 yield c 16 else: 17 break 18 the_file_name = "file_name.txt" 19 response = StreamingHttpResponse(file_iterator(the_file_name)) 20 response['Content-Type'] = 'application/octet-stream' 21 response['Content-Disposition'] = 'attachment;filename="{0}"'.format(the_file_name) 22 return response五、HttpResponse的更多用法:
1 #1 2 HttpResponse(xxx,content_type="xxx") 3 #2 4 response = HttpResponse() 5 response["age"] = 120 #響應(yīng)數(shù)據(jù)部分 6 #3 7 """以文件形式處理響應(yīng)數(shù)據(jù)部分""" 8 response = HttpResponse(my_data,content_type='application/vnd.ms-excel') 9 response['Content-Disposition'] = 'attachment; filename="foo.xls"'六、HttpResponse的一些方法:
1 HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None) 2 #使用頁面的內(nèi)容(content)和content-type來實(shí)例化一個(gè)HttpResponse對(duì)象。 3 #content 應(yīng)該是一個(gè)迭代器或者字符串。如果它是一個(gè)迭代器,那么他應(yīng)該返回的是一串字符串,并且這些字符串連接起來形成response的內(nèi)容(content)。如果不是迭代器或者字符串,那么在其被接收的時(shí)候?qū)⑥D(zhuǎn)換成字符串。 4 #content_type是可選地通過字符集編碼完成的MIME類型,并且用于填充HTTP Content-Type頭部。如果沒有設(shè)定, 會(huì)從 DEFAULT_CONTENT_TYPE 和 DEFAULT_CHARSET 設(shè)定中提取, 作為默認(rèn)值: “text/html; charset = utf-8“。 5 #status 是 HTTP 響應(yīng)狀態(tài)碼 。. 6 #reason 是HTTP響應(yīng)短語 如果沒有指定, 則使用默認(rèn)響應(yīng)短語. 7 #charset 在response中被編碼的字符集。如果沒有給定,將會(huì)從 content_type中提取, 如果提取不成功, 那么 DEFAULT_CHARSET 的設(shè)定將被使用. 8 #HttpResponse.__setitem__(header, value) 9 #由給定的首部名稱和值設(shè)定相應(yīng)的報(bào)文首部。 header 和 value 都應(yīng)該是字符串類型。 10 #HttpResponse.__delitem__(header) 11 #根據(jù)給定的首部名稱來刪除報(bào)文中的首部。如果對(duì)應(yīng)的首部不存在將沉默地(不引發(fā)異常)失敗。不區(qū)分大小寫。 12 #HttpResponse.__getitem__(header) 13 #根據(jù)首部名稱返回其值。不區(qū)分大小寫。 14 #HttpResponse.has_header(header) 15 #通過檢查首部中是否有給定的首部名稱(不區(qū)分大小寫),來返回True 或 False 。 16 #HttpResponse.setdefault(header, value) 17 HttpResponse.write(content) 18 #此方法使HttpResponse實(shí)例是一#個(gè)類似文件的對(duì)象。 19 HttpResponse.flush() 20 #此方法使HttpResponse實(shí)例是一個(gè)類似文件的對(duì)象。 21 HttpResponse.tell() 22 此方法使HttpResponse實(shí)例是一個(gè)類似文件的對(duì)象。 23 #HttpResponse.getvalue() 24 #HttpResponse.writable() 25 #HttpResponse.writelines(lines)?六、響應(yīng)中對(duì)session和cookie的控制:
HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)#設(shè)置cookie HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True) #與set_cookie() 類似,但是在設(shè)置之前將用密鑰簽名。通常與 HttpRequest.get_signed_cookie() #一起使用。你可以使用可選的salt 參考來增加密鑰強(qiáng)度,但需要記住將它傳遞給對(duì)應(yīng)的HttpRequest.get_signed_cookie() 調(diào)用。 HttpResponse.delete_cookie(key, path='/', domain=None)七、重定向:
1 #1 2 from django.http import HttpResponseRedirect 3 return HttpResponseRedirect("redirecturl") 4 #2 5 from django.core.urlresolvers import reverse 6 from django.shortcuts import redirect 7 return redirect(reverse('test.views.invoice_return_index', args=[]))八、錯(cuò)誤頁
1 #views.py 2 from django.shortcuts import render,render_to_response 3 def page_not_found(request): 4 return render_to_response('404.html') 5 #settings.py 6 要加上下面哦 7 handler404 = app1.views.page_not_found #改動(dòng)2?
轉(zhuǎn)載于:https://www.cnblogs.com/KevinGeorge/p/8332238.html
總結(jié)
以上是生活随笔為你收集整理的Django学习笔记第三篇--关于响应返回的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信银行校园i卡申请条件 这些不利条件分
- 下一篇: tcp/ip知识点的总结