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的urllib模块显示下载进度示例
Jan 17 Python
用Python编程实现语音控制电脑
Apr 01 Python
用python删除java文件头上版权信息的方法
Jul 31 Python
python统计cpu利用率的方法
Jun 02 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
python如何将多个PDF进行合并
Aug 13 Python
python验证码图片处理(二值化)
Nov 01 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
python基础之错误和异常处理
Oct 24 Python
方法汇总:Python 安装第三方库常用
Apr 26 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
一个简单计数器的源代码
2006/10/09 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
浅析Ajax语法
2016/12/05 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
Python高级用法总结
2018/05/26 Python
实例讲解python中的序列化知识点
2018/10/08 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
治超工作实施方案
2014/05/04 职场文书
面试必备的求职信
2014/05/25 职场文书
学校读书活动总结
2014/06/30 职场文书
投诉信回复范文
2015/07/03 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
Python实现学生管理系统(面向对象版)
2021/06/24 Python
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
vscode内网访问服务器的方法
2022/06/28 Servers