Django 如何获取前端发送的头文件详解(推荐)


Posted in Python onAugust 15, 2017

Django里面,我们知道可以在函数里面里面通过参数获取前端发来的数据。
比如可以通过request获取各种form的值啊,cookie啊等等。

def index(reqeust):
 # 获取当前已经登录的用户
 v = reqeust.COOKIES.get('username111')
 return render(reqeust,'index.html',{'current_user': v})

这些方法是Django把一些常用的数据已经替我们封装好了,因此可以直接使用。但是这些方法并不全,比如我刷新一个页面,这个请求的头文件里面,包含了一堆关于客户端的信息,如何获取所有的信息呢?

Django 如何获取前端发送的头文件详解(推荐)

我们可以通过request.environ来获取

首先需要导入一个类,如果忘记了这个类的名字,可以直接print(type(request))来获取。

<class 'django.core.handlers.wsgi.WSGIRequest'>

environ本质是个字典格式,因此可以直接print(k,v)获取所有的key和value,也可以通过对应的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})

输出结果:

{'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

注意最后的那个输出结果HTTP_USER_AGENT, 这个是客户端的信息,我们可以根据这个做判断,然后返回不同的结果,比如手机版和PC版返回的显示排版不同。

以上就是Django 获取前端发送的头文件全部内容啦,希望对大家的学习有所帮助,也希望大家继续支持三水点靠木~~

Python 相关文章推荐
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python线性方程组求解运算示例
Jan 17 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
python3解析库pyquery的深入讲解
Jun 26 Python
python递归全排列实现方法
Aug 18 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
新手入门学习python Numpy基础操作
Mar 02 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
Python办公自动化PPT批量转换操作
Sep 15 Python
socket + select 完成伪并发操作的实例
Aug 15 #Python
Python日期的加减等操作的示例
Aug 15 #Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 #Python
Python对列表中的各项进行关联详解
Aug 15 #Python
浅析Python中的赋值和深浅拷贝
Aug 15 #Python
Python单例模式的两种实现方法
Aug 14 #Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 #Python
You might like
php中cookie的使用方法
2014/03/29 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
表单提交验证类
2006/07/14 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
js输出列表实现代码
2010/09/12 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
Python函数嵌套实例
2014/09/23 Python
理解python正则表达式
2016/01/15 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
Python计算IV值的示例讲解
2020/02/28 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
团日活动总结
2014/04/28 职场文书
蓬莱阁导游词
2015/02/04 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
logback如何自定义日志存储
2021/08/30 Java/Android