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爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python随机数random模块使用指南
Sep 09 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
Python学习小技巧总结
Jun 10 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
Django继承自带user表并重写的例子
Nov 18 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
Python实现名片管理系统
Feb 14 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
Python读写压缩文件的方法
2020/07/30 Python
爱心倡议书范文
2014/05/12 职场文书
应届大专生求职信
2014/06/26 职场文书
应届生自荐信
2014/06/30 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
党员民主评议自我评价
2014/10/20 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL