Django 如何獲取前端發(fā)送的頭文件詳解(推薦)
Django里面,我們知道可以在函數(shù)里面里面通過參數(shù)獲取前端發(fā)來的數(shù)據(jù)。
比如可以通過request獲取各種form的值啊,cookie啊等等。
def index(reqeust): # 獲取當(dāng)前已經(jīng)登錄的用戶 v = reqeust.COOKIES.get('username111') return render(reqeust,'index.html',{'current_user': v})
這些方法是Django把一些常用的數(shù)據(jù)已經(jīng)替我們封裝好了,因此可以直接使用。但是這些方法并不全,比如我刷新一個(gè)頁面,這個(gè)請(qǐng)求的頭文件里面,包含了一堆關(guān)于客戶端的信息,如何獲取所有的信息呢?
我們可以通過request.environ來獲取
首先需要導(dǎo)入一個(gè)類,如果忘記了這個(gè)類的名字,可以直接print(type(request))來獲取。
<class 'django.core.handlers.wsgi.WSGIRequest'>
environ本質(zhì)是個(gè)字典格式,因此可以直接print(k,v)獲取所有的key和value,也可以通過對(duì)應(yīng)的key來輸出value
def tpl1(request): from django.core.handlers.wsgi import WSGIRequest print(type(request)) print(request.environ) for k,v in request.environ.items(): print(k,v) print(request.environ['HTTP_USER_AGENT']) user_list = [1, 2, 3, 43] return render(request, 'tpl1.html', {'u': user_list})
輸出結(jié)果:
{'ASL.LOG': 'Destination=file', 'PYTHONIOENCODING': 'UTF-8', 'wsgi.run_once': False, 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'REMOTE_ADDR': '127.0.0.1', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 69 Stepping 1, GenuineIntel', 'TEMP': 'C:\\Users\\yuan.li\\AppData\\Local\\Temp', 'USERPROFILE': 'C:\\Users\\yuan.li', 'SERVER_PORT': '8000', 'WINDIR': 'C:\\WINDOWS', 'SYSTEMDRIVE': 'C:', 'FP_NO_HOST_CHECK': 'NO', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'USERDNSDOMAIN': 'OMNICOM.COM.AU', 'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 'PROGRAMFILES': 'C:\\Program Files (x86)', 'USERDOMAIN_ROAMINGPROFILE': 'OMNICOM', 'wsgi.url_scheme': 'http', 'wsgi.input': <_io.BufferedReader name=760>, 'APPDATA': 'C:\\Users\\yuan.li\\AppData\\Roaming', 'TMP': 'C:\\Users\\yuan.li\\AppData\\Local\\Temp', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br', 'GATEWAY_INTERFACE': 'CGI/1.1', 'PATH_INFO': '/tpl1/', 'PUBLIC': 'C:\\Users\\Public', 'HTTP_COOKIE': 'csrftoken=eIEjNdtcPYmGD2jGDfEwxb0MwePMQTuLWchxG85P7zH7wHN2BZmERsppA4PHGd6D', 'PROCESSOR_ARCHITEW6432': 'AMD64', 'COMPUTERNAME': 'YLI-PC', 'wsgi.version': (1, 0), 'ONEDRIVE': 'C:\\Users\\yuan.li\\OneDrive', 'CONTENT_TYPE': 'text/plain', 'PROGRAMW6432': 'C:\\Program Files', 'PYTHONUNBUFFERED': '1', 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>, 'RUN_MAIN': 'true', 'PSMODULEPATH': 'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules\\;C:\\Program Files (x86)\\VMware\\Infrastructure\\vSphere PowerCLI\\Modules', 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>, 'HOMEPATH': '\\Users\\yuan.li', 'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe', 'USERNAME': 'yuan.li', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW', 'SERVER_NAME': 'vmware-localhost', 'USERDOMAIN': 'OMNICOM', 'SCRIPT_NAME': '', 'PYCHARM_HOSTED': '1', 'QUERY_STRING': '', 'PROGRAMDATA': 'C:\\ProgramData', 'NUMBER_OF_PROCESSORS': '4', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'SERVER_PROTOCOL': 'HTTP/1.1', 'HTTP_CONNECTION': 'keep-alive', 'REMOTE_HOST': '', 'HTTP_ACCEPT_LANGUAGE': 'en-GB,en-US;q=0.8,en;q=0.6', 'HTTP_CACHE_CONTROL': 'max-age=0', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'wsgi.multiprocess': False, 'ALLUSERSPROFILE': 'C:\\ProgramData', 'SYSTEMROOT': 'C:\\WINDOWS', 'SERVER_SOFTWARE': 'WSGIServer/0.2', 'PROCESSOR_REVISION': '4501', 'SESSIONNAME': 'Console', 'HTTP_HOST': '127.0.0.1:8000', 'CONTENT_LENGTH': '', 'PATH': 'C:\\Program Files (x86)\\Business Objects\\Common\\3.5\\bin\\NOTES\\;C:\\Program Files (x86)\\Business Objects\\Common\\3.5\\bin\\NOTES\\DATA\\;C:\\Python35-32\\Scripts\\;C:\\Python35-32\\;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\Sennheiser\\SoftphoneSDK\\;C:\\Python35-32\\Scripts;C:\\Users\\yuan.li\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program Files (x86)\\Nmap;', 'OS': 'Windows_NT', 'PYTHONPATH': 'C:\\s14day21', 'HOMEDRIVE': 'C:', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'DJANGO_SETTINGS_MODULE': 's14day21.settings', 'PROCESSOR_ARCHITECTURE': 'x86', 'REQUEST_METHOD': 'GET', 'LOCALAPPDATA': 'C:\\Users\\yuan.li\\AppData\\Local', 'PROCESSOR_LEVEL': '6', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'LOGONSERVER': '\\\\MELDC01', 'wsgi.multithread': True, 'COMMONPROGRAMFILES': 'C:\\Program Files (x86)\\Common Files'} ASL.LOG Destination=file PYTHONIOENCODING UTF-8 wsgi.run_once False FPS_BROWSER_APP_PROFILE_STRING Internet Explorer REMOTE_ADDR 127.0.0.1 PROCESSOR_IDENTIFIER Intel64 Family 6 Model 69 Stepping 1, GenuineIntel TEMP C:\Users\yuan.li\AppData\Local\Temp USERPROFILE C:\Users\yuan.li SERVER_PORT 8000 WINDIR C:\WINDOWS SYSTEMDRIVE C: FP_NO_HOST_CHECK NO COMMONPROGRAMFILES(X86) C:\Program Files (x86)\Common Files USERDNSDOMAIN OMNICOM.COM.AU HTTP_UPGRADE_INSECURE_REQUESTS 1 PROGRAMFILES C:\Program Files (x86) USERDOMAIN_ROAMINGPROFILE OMNICOM wsgi.url_scheme http wsgi.input <_io.BufferedReader name=760> APPDATA C:\Users\yuan.li\AppData\Roaming TMP C:\Users\yuan.li\AppData\Local\Temp HTTP_ACCEPT_ENCODING gzip, deflate, br GATEWAY_INTERFACE CGI/1.1 PATH_INFO /tpl1/ PUBLIC C:\Users\Public HTTP_COOKIE csrftoken=eIEjNdtcPYmGD2jGDfEwxb0MwePMQTuLWchxG85P7zH7wHN2BZmERsppA4PHGd6D PROCESSOR_ARCHITEW6432 AMD64 COMPUTERNAME YLI-PC wsgi.version (1, 0) ONEDRIVE C:\Users\yuan.li\OneDrive CONTENT_TYPE text/plain PROGRAMW6432 C:\Program Files PYTHONUNBUFFERED 1 wsgi.errors <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> RUN_MAIN true PSMODULEPATH C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Modules wsgi.file_wrapper <class 'wsgiref.util.FileWrapper'> HOMEPATH \Users\yuan.li COMSPEC C:\WINDOWS\system32\cmd.exe USERNAME yuan.li PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW SERVER_NAME vmware-localhost USERDOMAIN OMNICOM SCRIPT_NAME PYCHARM_HOSTED 1 QUERY_STRING PROGRAMDATA C:\ProgramData NUMBER_OF_PROCESSORS 4 FPS_BROWSER_USER_PROFILE_STRING Default SERVER_PROTOCOL HTTP/1.1 HTTP_CONNECTION keep-alive REMOTE_HOST HTTP_ACCEPT_LANGUAGE en-GB,en-US;q=0.8,en;q=0.6 HTTP_CACHE_CONTROL max-age=0 HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 wsgi.multiprocess False ALLUSERSPROFILE C:\ProgramData SYSTEMROOT C:\WINDOWS SERVER_SOFTWARE WSGIServer/0.2 PROCESSOR_REVISION 4501 SESSIONNAME Console HTTP_HOST 127.0.0.1:8000 CONTENT_LENGTH PATH C:\Program Files (x86)\Business Objects\Common\3.5\bin\NOTES\;C:\Program Files (x86)\Business Objects\Common\3.5\bin\NOTES\DATA\;C:\Python35-32\Scripts\;C:\Python35-32\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Sennheiser\SoftphoneSDK\;C:\Python35-32\Scripts;C:\Users\yuan.li\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Nmap; OS Windows_NT PYTHONPATH C:\s14day21 HOMEDRIVE C: COMMONPROGRAMW6432 C:\Program Files\Common Files DJANGO_SETTINGS_MODULE s14day21.settings PROCESSOR_ARCHITECTURE x86 REQUEST_METHOD GET LOCALAPPDATA C:\Users\yuan.li\AppData\Local PROCESSOR_LEVEL 6 HTTP_USER_AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 PROGRAMFILES(X86) C:\Program Files (x86) LOGONSERVER \\MELDC01 wsgi.multithread True COMMONPROGRAMFILES C:\Program Files (x86)\Common Files Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
注意最后的那個(gè)輸出結(jié)果HTTP_USER_AGENT, 這個(gè)是客戶端的信息,我們可以根據(jù)這個(gè)做判斷,然后返回不同的結(jié)果,比如手機(jī)版和PC版返回的顯示排版不同。
以上就是Django 獲取前端發(fā)送的頭文件全部?jī)?nèi)容啦,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家繼續(xù)支持腳本之家~~
相關(guān)文章
python?動(dòng)態(tài)導(dǎo)入模塊實(shí)現(xiàn)模塊熱更新的方法
這篇文章主要介紹了python?動(dòng)態(tài)導(dǎo)入模塊,實(shí)現(xiàn)模塊熱更新,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Python安全獲取域管理員權(quán)限幾種方式操作示例
在不考慮直接攻擊域控的情況下,如何快速獲取域管理員權(quán)限呢?本文分享幾種常見的獲取域管理員權(quán)限的方式,有需要的朋友可以借鑒參考下2021-10-10Python實(shí)現(xiàn)將PowerPoint轉(zhuǎn)為HTML格式
有時(shí)我們需要將精心設(shè)計(jì)的PPT發(fā)布到網(wǎng)絡(luò)上以便于更廣泛的訪問和分享,本文將介紹如何使用Python將PowerPoint轉(zhuǎn)換為HTML格式,需要的可以參考下2024-04-04Python對(duì)口紅進(jìn)行數(shù)據(jù)分析來選定情人節(jié)禮物
情人節(jié)送小仙女什么禮物?讓我們來用Python對(duì)口紅進(jìn)行數(shù)據(jù)分析,那個(gè)女孩子會(huì)拒絕這樣精心挑選的禮物,感興趣的小伙伴快來看看吧2022-02-02詳解pytest+Allure搭建方法以及生成報(bào)告常用操作
本文主要介紹了詳解pytest+Allure搭建方法以及生成報(bào)告常用操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09離線狀態(tài)下在jupyter notebook中使用plotly實(shí)例
這篇文章主要介紹了離線狀態(tài)下在jupyter notebook中使用plotly實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04解決jupyter notebook import error但是命令提示符import正常的問題
這篇文章主要介紹了解決jupyter notebook import error但是命令提示符import正常的問題,具有很好的參考2020-04-04