Django 获取前端发送的头文件
Django里面,我們知道可以在函數里面里面通過參數獲取前端發來的數據。
比如可以通過request獲取各種form的值啊,cookie啊等等。
def?index(reqeust):#?獲取當前已經登錄的用戶v?=?reqeust.COOKIES.get('username111')return?render(reqeust,'index.html',{'current_user':?v})這些方法是Django把一些常用的數據已經替我們封裝好了,因此可以直接使用。但是這些方法并不全,比如我刷新一個頁面,這個請求的頭文件里面,包含了一堆關于客戶端的信息,如何獲取所有的信息呢?
我們可以通過request.environ來獲取
首先需要導入一個類,如果忘記了這個類的名字,可以直接print(type(request))來獲取。
environ本質是個字典格式,因此可以直接print(k,v)獲取所有的key和value,也可以通過對應的key來輸出value
輸出結果:
{'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,p_w_picpath/webp,p_w_picpath/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,p_w_picpath/webp,p_w_picpath/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注意最后的那個輸出結果HTTP_USER_AGENT, 這個是客戶端的信息,我們可以根據這個做判斷,然后返回不同的結果,比如手機版和PC版返回的顯示排版不同。
除了通過WSGI的類來獲取header的信息,我們還有2個方式可以獲取, request.body和request.META
request.META獲取的數據和WSGI一樣,但是他就是個純粹的字符串,不像字典已經分好鍵值對了那么容易提取數據;
request.body 在使用PUT,POST, ?DELETE等方式提交表單的時候很有用,因為我們知道GET請求的值是在URL里面可以直接獲取的,其他的方式則是把值封裝在body里面以byte的方式發送的。例如
def?business(request):if?request.method=='GET':v1?=?models.Business.objects.all()print(v1)return?render(request,?'business.html',?{'v1':?v1})elif?request.method=='POST':u=request.POST.get('caption')models.Business.objects.create(caption=u)print(request.body)return??redirect('/business')我在前端執行一個POST的操作,提交一個數據
返回的結果
b'caption=sssssss'轉載于:https://blog.51cto.com/beanxyz/1954354
總結
以上是生活随笔為你收集整理的Django 获取前端发送的头文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何删除Safari浏览器的扩展程序 大
- 下一篇: 细数Android 7.0“牛轧糖”的五