Django 如何從request中獲取前端數(shù)據(jù)
Django
###request
如果說 urls.py 是 Django 中前端頁面和后臺(tái)程序橋梁,那么 request 就是橋上負(fù)責(zé)運(yùn)輸?shù)男∑?/p>
可以說后端接收到的來至前端的信息幾乎全部來自于requests中。
##request對(duì)象的屬性
request.META
request.MATE獲取的是一個(gè)標(biāo)準(zhǔn)的python字典。它包含了所有的HTTP請求信息
1 CONTENT_LENGTH —— 請求的正文的長度(是一個(gè)字符串)。
2 CONTENT_TYPE —— 請求的正文的MIME 類型。
3 HTTP_ACCEPT —— 響應(yīng)可接收的Content-Type。
4 HTTP_ACCEPT_ENCODING —— 響應(yīng)可接收的編碼。
5 HTTP_ACCEPT_LANGUAGE —— 響應(yīng)可接收的語言。
6 HTTP_HOST —— 客服端發(fā)送的HTTP Host 頭部。
7HTTP_REFERER —— Referring 頁面。
8 HTTP_USER_AGENT —— 客戶端的user-agent 字符串。
9 QUERY_STRING —— 單個(gè)字符串形式的查詢字符串(未解析過的形式)。
10 REMOTE_ADDR —— 客戶端的IP 地址。
11 REMOTE_HOST —— 客戶端的主機(jī)名。
12 REMOTE_USER —— 服務(wù)器認(rèn)證后的用戶。
13 REQUEST_METHOD —— 一個(gè)字符串,例如"GET" 或"POST"。
14 SERVER_NAME —— 服務(wù)器的主機(jī)名。
15 SE0RVER_PORT —— 服務(wù)器的端口(是一個(gè)字符串)
獲取請求的源主機(jī):HttpRequest.get_host()
request.scheme
請求的方式,即http或者是https
request.path
請求的路徑,這里的路徑是指相對(duì)路徑,也就是說一個(gè)登陸后臺(tái)頁面的請求:http://127.0.0.1:8000/admin 的路徑是 /admin
獲取完整路徑(包括參數(shù)):HttpRequest.get_full_path()
獲取絕對(duì)url: HttpRequest.bulid_absolute_uri(location) 此參數(shù)默認(rèn)為完整路徑
request.encoding
請求提交的數(shù)據(jù)的編碼方式
request.session
request.session 獲取的是一個(gè)類似于字典的對(duì)象,可以進(jìn)行讀取寫入操作,常用來保存一些數(shù)據(jù)來實(shí)現(xiàn)會(huì)話跟蹤技術(shù)。因?yàn)?HTTP 是一個(gè)無狀態(tài),不連續(xù)的協(xié)議。
如果想讓服務(wù)器記住當(dāng)前的訪問對(duì)象,就需要記錄請求者的一些信息來達(dá)到這個(gè)目的。
# 設(shè)置session request.session["name"] = "root" # 獲取session name = request.sessin["name"]
?。?!說到這里需要提一下,django會(huì)默認(rèn)為session使用json序列化。json序列化只能序列化一些基本數(shù)據(jù)類型,如數(shù)字,字符串,列表等。
所以session不能直接存儲(chǔ)對(duì)象.可以簡單的在settings中添加 SESSION_SERIALIZER = "django.contrib.sessions.serializers.PickleSerializer"
request.COOKIES
與session類似,區(qū)別是cookies數(shù)據(jù)是保存在客戶端,session數(shù)據(jù)是保存在服務(wù)端。
相對(duì)而言session更安全,cookies在不同的瀏覽器上保存數(shù)據(jù)的大小限制也不同。但是,存在即合理。
cooike自有它的好處這里不多說。
# 設(shè)置cookies response.set_cookie('name','root') # 設(shè)置加密cookies response.set_cookie('passsword','123456',salt='@#$!%^&') # 獲取cookie request.COOKIES.get("name") # 獲取加密的cookie request.get_signed_cookie("password",salt="@#$!%^&")
request.method
請求方式 POST/GET…
####下面正式開始獲取數(shù)據(jù)
就是在這里遇見了一些小問題,所以導(dǎo)致我寫這篇文章來記錄一下
request.body
請求的主體,返回的是一個(gè)字符串
request.data
請求的數(shù)據(jù)部分,返回的是一個(gè)字典對(duì)象(除此之外,與request.body是很類似的)
request.POST
獲取post方式表單中提交的數(shù)據(jù)
request.POST["username"] request.POST.get("username")
request.GET
獲取get方式表單中或url提交的數(shù)據(jù)
request.GET["username"] request.GET.get("username")
補(bǔ)充:django框架下,前端調(diào)取數(shù)據(jù)詳解
首先話癆一下,公司服務(wù)端使用的是python語言,而我們的后臺(tái)項(xiàng)目使用的django框架,前端調(diào)取數(shù)據(jù)也是基于框架輸出的。下面總結(jié)一下django框架下,前端調(diào)取數(shù)據(jù)的各種情況。
在前端頁面調(diào)取數(shù)據(jù),我們最常使用的方式總結(jié)為以下幾種:
數(shù)據(jù)直接輸出、for循環(huán)輸出、if判斷輸出、日期格式化。
下面我們針對(duì)每一種情況看看django是怎樣輸出的
1、數(shù)據(jù)直接輸出
{{ form.deliver_institution }}
2、for循環(huán)和if判斷結(jié)合使用
{% for item in form.newborn_hearing_screening %} {% if forloop.first %} {% else %} {{ item }} {% endif %} {% endfor %}
3、日期格式化
{{ my_date|date:"Y-m-d" }}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
python常用時(shí)間庫time、datetime與時(shí)間格式之間的轉(zhuǎn)換教程
Python項(xiàng)目中很多時(shí)候會(huì)需要將時(shí)間在Datetime格式和TimeStamp格式之間轉(zhuǎn)化,下面這篇文章主要給大家介紹了關(guān)于python常用時(shí)間庫time、datetime與時(shí)間格式之間轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2023-02-02Python3.5面向?qū)ο蟪绦蛟O(shè)計(jì)之類的繼承和多態(tài)詳解
這篇文章主要介紹了Python3.5面向?qū)ο蟪绦蛟O(shè)計(jì)之類的繼承和多態(tài),結(jié)合實(shí)例形式詳細(xì)分析了Python3.5面向?qū)ο蟪绦蛟O(shè)計(jì)中類的繼承與多態(tài)常見用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-04-04python實(shí)現(xiàn)bitmap數(shù)據(jù)結(jié)構(gòu)詳解
bitmap是很常用的數(shù)據(jù)結(jié)構(gòu),比如用于Bloom Filter中,下面是使用python實(shí)現(xiàn)bitmap數(shù)據(jù)結(jié)構(gòu)的代碼講解,需要的朋友可以參考下2014-02-02python腳本實(shí)現(xiàn)統(tǒng)計(jì)日志文件中的ip訪問次數(shù)代碼分享
這篇文章主要介紹了python腳本實(shí)現(xiàn)統(tǒng)計(jì)日志文件中的ip訪問次數(shù)代碼分享,注意此腳本只適用ip在每行開頭的日志文件,需要的朋友可以參考下2014-08-08Python numpy實(shí)現(xiàn)數(shù)組合并實(shí)例(vstack,hstack)
這篇文章主要介紹了Python numpy實(shí)現(xiàn)數(shù)組合并(官網(wǎng)實(shí)例),涉及vstack,hstack的簡單用法,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python3+Pycharm+PyQt5環(huán)境搭建步驟圖文詳解
這篇文章主要介紹了Python3+Pycharm+PyQt5環(huán)境搭建步驟圖文詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05