Django學習筆記第三篇--關于響應返回

一、返回簡單類型:

1 #1、返回簡單字符串
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、返回一個頁面
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、簡單流文件下載
 2 return HttpRequest(fd.read())
 3 #相關字節控制:
 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、復雜的大型流文件下載:
 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 #響應數據部分
6 #3
7 """以文件形式處理響應數據部分"""
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 #使用頁面的內容(content)和content-type來實例化一個HttpResponse對象。
 3 #content 應該是一個迭代器或者字符串。如果它是一個迭代器,那么他應該返回的是一串字符串,并且這些字符串連接起來形成response的內容(content)。如果不是迭代器或者字符串,那么在其被接收的時候將轉換成字符串。
 4 #content_type是可選地通過字符集編碼完成的MIME類型,并且用于填充HTTP Content-Type頭部。如果沒有設定, 會從 DEFAULT_CONTENT_TYPE 和 DEFAULT_CHARSET 設定中提取, 作為默認值: “text/html; charset = utf-8“。
 5 #status 是 HTTP 響應狀態碼 。.
 6 #reason 是HTTP響應短語 如果沒有指定, 則使用默認響應短語.
 7 #charset 在response中被編碼的字符集。如果沒有給定,將會從 content_type中提取, 如果提取不成功, 那么 DEFAULT_CHARSET 的設定將被使用.
 8 #HttpResponse.__setitem__(header, value)
 9 #由給定的首部名稱和值設定相應的報文首部。 header 和 value 都應該是字符串類型。
10 #HttpResponse.__delitem__(header)
11 #根據給定的首部名稱來刪除報文中的首部。如果對應的首部不存在將沉默地(不引發異常)失敗。不區分大小寫。
12 #HttpResponse.__getitem__(header)
13 #根據首部名稱返回其值。不區分大小寫。
14 #HttpResponse.has_header(header)
15 #通過檢查首部中是否有給定的首部名稱(不區分大小寫),來返回True 或 False 。
16 #HttpResponse.setdefault(header, value)
17 HttpResponse.write(content)
18 #此方法使HttpResponse實例是一#個類似文件的對象。
19 HttpResponse.flush()
20 #此方法使HttpResponse實例是一個類似文件的對象。
21 HttpResponse.tell()
22 此方法使HttpResponse實例是一個類似文件的對象。
23 #HttpResponse.getvalue()
24 #HttpResponse.writable()
25 #HttpResponse.writelines(lines)?

六、響應中對session和cookie的控制:

HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)#設置cookie

HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)
#與set_cookie() 類似,但是在設置之前將用密鑰簽名。通常與
HttpRequest.get_signed_cookie() 
#一起使用。你可以使用可選的salt 參考來增加密鑰強度,但需要記住將它傳遞給對應的HttpRequest.get_signed_cookie() 調用。

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=[]))

八、錯誤頁

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 #改動2

?

轉載于:https://www.cnblogs.com/KevinGeorge/p/8332238.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252466.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP響應狀態碼

1XX:代表提示信息 2XX:代表成功信息 3XX:代表重定向 4XX:代表客戶端錯誤信息 5XX:代表服務器錯誤 信息 500:500 錯誤是服務器內部錯誤 ,而且是程序上錯誤 為多,可能是你的用戶權限的問題導致,或者是數據庫連接出現了錯誤. 501:服務器501服務器501錯誤是服務器是否具有請求功能.…

pycharm中無法import已經安裝的ros中的庫

使用pycharm寫python程序,無法import 已經安裝的ros包,并提示ImportError: No module named sensor_msgs.msg 解決方法如下 1. pycharm->file->settings->project:csvfile->project interpreter-> 點擊右側下三角選擇 show all 2. 在彈…

tcp/ip知識點的總結

知識點搜集于網絡,在加上自己的總結,還有很多不全,希望大家多提意見,共享學習! 一、TCP/IP是什么? TCP/IP是一個協議族,而不是單獨的協議。包括arp、ip、icmp、tcp、udp、http、ftp等協議 二、T…

搜索引擎ElasticSearchV5.4.2系列一之ES介紹

相關博文: 搜索引擎ElasticSearchV5.4.2系列一之ES介紹 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2kibanaV5.4.2x-packV5.4.2安裝 搜索引擎ElasticSearchV5.4.2系列三之ES使用 Elasticsearch 是一個開源的搜索引擎,建立在一個全文搜索引擎…

[譯] 前端組件設計原則

原文地址:Front end component design principles 原文作者:Andrew Dinihan 文中示例代碼:傳送門 限于個人能力,如有錯漏之處,煩請不吝賜教。 前言 我在最近的工作中開始使用 Vue 進行開發,但是我在上一家公…

imu_utils標定imu問題解決

在編譯過程中遇到的一些問題可以參照這個女生的文章 https://blog.csdn.net/fang794735225/article/details/92804030 下面是imu_utils的主頁,可以下載代碼,也有使用步驟 https://github.com/gaowenliang/imu_utils 我下載了imu_utils主頁最后面提供…

術語-服務:PaaS

ylbtech-術語-服務:PaaSPaaS是Platform-as-a-Service的縮寫,意思是平臺即服務。 把服務器平臺作為一種服務提供的商業模式。通過網絡進行程序提供的服務稱之為SaaS(Software as a Service),而云計算時代相應的服務器平臺或者開發環境作為服務…

PostgreSQL安裝和簡單配置

PostgreSQL安裝與使用 目錄 依賴包的安裝源碼編譯和安裝初始化數據庫集簇簡單配置依賴包安裝 PostgreSQL源碼安裝依賴以下四個軟件包 readline zlib flex bison 在Ubuntu中可是應用以下命令直接進行安裝: sudo apt-get install libreadline6 libreadline6-dev zlib1…

1.App瘦身經驗總結

為什么apk越來越大? 1.項目不斷發展,功能越多,代碼量增加的同時,資源文件也在不斷的增多2.app支持的主流dpi越來越多,如ldpi、mdpi、hdpi、xh xxh xxxh等等,間接導致資源增多3.引入的第三方sdk或開源庫越來…

研究相機和IMU坐標系變換

剛開始錄制的數據時沒有考慮相機和IMU之間的坐標變換,但是后來發現跟蹤效果不好,去查驗imu數據時,發現,我采集保存的imu數據格式沒有和euroc數據集中的imu數據保存格式統一,所以需要研究的是在euroc用于數據采集的設備…

第五天:Swift拖動 item 重排 CollectionView

參考鏈接:https://www.jianshu.com/p/96f956f1479e 1 import UIKit2 3 enum VC: String {4 case ViewController5 case CollectionViewController6 7 func segueIdentifier() -> String {8 switch self {9 case .ViewController:10 …

MIT Kimera閱讀筆記

這兩天在調研SLAM的最新算法,找到了2019CVPR上的一篇文章,出自于MIT,因為要給其他同事講解,所以就把文章的重點內容在我個人理解的情況下翻譯了出來,有理解不到位的還請各位大佬多多批評指正。 最后附上了Delaunay Tri…

C#中的ForEach

public void ForEach(Action<T> action) 針對List<T>集合中的每個元素執行操作Action<T> action,Action<T>是只接受一個類型為T的傳入參數返回值為void的委托,對于泛型List<T>來說,Action<T>中的類型與List<T>中的類型是相同的.acti…

哈希映射

哈希來源問題&#xff1a;關于統計一個字符串集合中&#xff0c;求出現次數最多的字符串思路&#xff1a;建立一個哈希映射&#xff08;HashMap&#xff09;&#xff0c;其鍵為"字符串"&#xff0c;值為"字符串出現次數"&#xff0c;然后遍歷字符串集合&am…

1月28日云棲精選夜讀 | 終于等到你!阿里正式向 Apache Flink 貢獻 Blink 源碼

如同我們去年12月在 Flink Forward China 峰會所約&#xff0c;阿里巴巴內部 Flink 版本 Blink 將于 2019 年 1 月底正式開源。今天&#xff0c;我們終于等到了這一刻。 熱點熱議 終于等到你&#xff01;阿里正式向 Apache Flink 貢獻 Blink 源碼 作者&#xff1a;技術小能手 發…

ZOJ-3537

題目大意&#xff1a;給你一個n (n<300) 邊形&#xff0c;給出它所有的頂點坐標&#xff0c;讓你把它劃分成n-2個三角形的花費最小值&#xff0c;頂點 a 和 b 相連的花費為 abs(a.xb.x)*abs(a.yb.y)。 如果是凹多邊形輸出無解。 思路&#xff1a;先跑個凸包判斷是不是凸多邊…

你會等待還是離開(大理)---寫的一個推文

你會等待還是離開 -----出發和遇見大理 上關花鬧 下關風薰 蒼山雪寂 洱海月遲 但聞肆季弦雀起 才吹小雨又需晴 現實很調皮&#xff0c;很容易就讓人沒有力氣&#xff0c;就像變與不變&#xff0c;并不復雜&#xff0c;也不遙遠&#xff0c;一個寒假的距離&#xff0c;一句話的力…

sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com

安裝上ros無法進行rosdep init.解決方法如下&#xff1a;https://zhuanlan.zhihu.com/p/77483614 因此&#xff0c;在/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py中頂部直接插入兩行代碼取消SSL驗證 import ssl ssl._create_default_https_context ssl._crea…

YodaOS: 一個屬于 Node.js 社區的操作系統

開發四年只會寫業務代碼&#xff0c;分布式高并發都不會還做程序員&#xff1f; >>> 大家好&#xff0c;很開心在這里宣布 YodaOS開源了。他將承載 Rokid 4年以來對于人工智能和語音交互領域的沉淀&#xff0c;并選擇 Node.js 作為操作系統的一等開發公民&#xff0…

Android頂部粘至視圖具體解釋

不知從某某時間開始&#xff0c;這樣的效果開始在UI設計中流行起來了。讓我們先來看看效果&#xff1a;大家在支付寶、美團等非常多App中都有使用。要實現這個效果&#xff0c;我們能夠來分析下思路&#xff1a;我們肯定要用2個一樣的布局來顯示我們的粘至布局。一個是正常的、…