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 相关文章推荐
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
opencv 图像轮廓的实现示例
Jul 08 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
python 逐步回归算法
Apr 06 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
搭建vue开发环境
2018/07/19 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python文件去除注释的方法
2015/05/25 Python
Python实现字典依据value排序
2016/02/24 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
浅析Python 序列化与反序列化
2020/08/05 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
新学期家长寄语
2014/01/19 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
子女赡养老人协议书
2016/03/23 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python