在view.py的函数中。我们的函数中第一个参数都是request。在request中有一些信息,比如正在加载这个页面的用户是谁,或者是用什么浏览器之类的。这对于我们网站的管理是很有用处的。

request对象中包含当前请求URL的一些信息:

request.path: 除域名以外的请求路径,以正斜杠开头

request.get_host():主机名(比如,通常所说的域名)

request.get_full_path():请求路径,可能包含查询字符串

request.is_secure():如果通过HTTPS访问,则此方法返回True, 否则返回False

我们来实际验证一下:定义一个测试函数,在test.html中显示信息

def function_test(request):
    path=request.path
    host=request.get_host()
    full_path=request.get_full_path()
    whether_secure=request.is_secure()
    return render(request,'test.html',{'path':path,'host':host,'full_path':full_path,'is_secure':whether_secure})
输出结果如下:

那么在request对象中是否包含更多的信息呢,比如用户的浏览器,以及用户的IP地址。这些也是有的,都包含在request.META中,request.META是 一个字典。包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常是浏览器的名称和版本号)。主要有以下的信息:

PYTHONIOENCODING:编码方式

COMPUTERNAME:用户的主机名

HTTP_COOKIE:cookie值

'USERDOMAIN':用户的域

SERVER_PROTOCOL:服务器协议版本

SERVER_SOFTWARE:服务器版本

REQUEST_METHOD:请求方式

HTTP_CONNECTION:HTTP连接方式

REMOTE_ADDR:远程访问的地址

HTTP_USER_AGENT:用户浏览器的user-agent字符串

由于这些信息有些是取决于用户所发送的header信息和服务器端设置的header配置,因此在取这些数据的时候应该加下保护防止获取不到对应的键值而报错:

def function_test(request):
    try:
        user_agent=request.META['HTTP_USER_AGENT']
        remote_addr=request.META['REMOTE_ADDR']
        cookie=request.META['HTTP_COOKIE']
    except KeyError:
        error="key value not found"
    return
render(request,'test.html',{'user_agent':user_agent,'remote_addr':remote_addr,'cookie':cookie})
结果如下:


												

最新文章

  1. Base64编码原理分析
  2. RequireJS入门之二——第二例(写自己的模块)
  3. oracle编程总结
  4. runtime笔记一
  5. favicon.ico的制作
  6. 使用CSS3 BACKFACE-VISIBILITY属性制作翻转动画效果
  7. Hadoop配置文件解析
  8. GCC内联汇编入门
  9. TextView使用Spannable设置复合文本
  10. RAW模板开发--入口文件官方规范
  11. webp转png或jpg
  12. loadrunner迭代和并发的区别
  13. [Codeforces394B]Very Beautiful Number(逆推)
  14. PHP字符串函数之 strcmp strncmp strcasecmp strncasecmp strnatcmp strnatcasecmp
  15. 关于Android如何创建空文件夹,以及mkdir和mkdirs的区别
  16. [SQL]SQL Prompt5的工具栏按钮介绍
  17. tkinter之Frame
  18. springcloud-eureka简单实现
  19. binutils工具集之---nm
  20. 页面局部加载,适合Ajax Loading场景(Demo整理)

热门文章

  1. Azure上采用Powershell从已有的VHD创建VM
  2. lrzsz-串口传输文件
  3. Spring Boot 集成Swagger2生成RESTful API文档
  4. WebDriver数据驱动模式
  5. MySQL binlog 自动备份脚本
  6. 【转】bootstrap模态框(modal)使用remote方法加载数据,只能加载一次的解决办法
  7. vue-cli脚手架build目录中的dev-server.js配置文件
  8. 下拉框改变事件:获取下拉框中当前选择的文本 SelectionChanged事件
  9. 第五章 深入class文件结构(待续)
  10. ASP.NET 连接MySql数据库