在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})
结果如下:


												

Django之request对象的更多相关文章

  1. django的request对象和response对象

    概述Django 使用 request 和 response 对象表示系统状态数据..当请求一个页面时,Django创建一个 HttpRequest 对象.该对象包含 request 的元数据. 然后 ...

  2. django中request对象详解(转载)

    django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数. ...

  3. Django将request对象传入模板配置

    对于很多时候,需要从模板中获取很请求中很多内容,比如当前请求的url,当前的session变量中的某个值,这时候我们可以通过配置可将request对象传递进模板. django1.10版本: sett ...

  4. django 修改 request 对象中的请求参数, 并重新赋值给 request 对象

    直接上代码, 实现流程看代码及注释 def your_view(self, request): method = request.method if method == "GET" ...

  5. 详解Django中Request对象的相关用法

    原文链接:http://www.jb51.net/article/69624.htm 1.从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时 ...

  6. django的request对象方法初识

    1:request.post 拿到的是post请求发送过来的数据,可以将其看作是一个个的键值对 使用get方法可以通过key拿到值,如果该值是一个列表的话,get方法只能拿到列表的最后一个值,使用ge ...

  7. Request对象和Response对象 JsonResponse对象 和 Django shortcut functions 和QueryDict对象

    request request属性 属性: django将请求报文中的请求行.头部信息.内容主体封装成 HttpRequest 类中的属性. 除了特殊说明的之外,其他均为只读的. ''' 0.Http ...

  8. django之视图系统 views.py-->主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)

    一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 一 视图的实现可以基于两种方法: 1 基于函数的形式 FBV 使用装饰器装饰FBV  直接在上 ...

  9. django (装饰器,母版继承,自定义,request对象,response对象)

     1. 装饰器  1.    def wrapper(fn):    def inner(*args,**kwargs):     执行被装饰函数之前的操作     ret = fn(*args,** ...

随机推荐

  1. ECMAScript6入门-序言

    本系列笔记基于阮一峰大佬的开源书籍.如果大家想看可以去该地址 本系列笔记只记录本人自己学习的过程,如果有侵权收到通知会自行下架. 如果大家看到可以直接去地址处学习,如果觉得好还望支持正版. 在此感谢阮 ...

  2. Python 函数之函数调用

    Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...

  3. es5中foreach的用法

    HTML代码: <p id="result"></p> JS代码: var eleResult = document.getElementById(&quo ...

  4. Object-C类、方法、构造函数(2)

    Object-C 代码分为三部分:.h文件..m文件及调用文件 .h源文件 #import <Foundation/Foundation.h> @interface Student:NSO ...

  5. HDU4006(小根堆)

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  6. bash的使用

    转自:http://blog.csdn.net/y2888886/article/details/50535033 在上篇博文的基础上做如下修改 注意一些常见命令中间就要加 “ ” ,否则很多命令无法 ...

  7. eclipse下不能编译.ftl文件,会报错的解决方法

    先安装一个插件 右击ftl文件,选择open with 但是没有freeMarker这个选项,如果有直接打开,如果没有则需要下载相关插件. 要安装一个freemarker的插件,才可以编辑FTL文件, ...

  8. 【转】bootstrap模态框(modal)使用remote方法加载数据,只能加载一次的解决办法

    http://blog.csdn.net/coolcaosj/article/details/38369787 bootstrap的modal中,有一个remote选项,可以动态加载页面到modal- ...

  9. 开发环境入门 linux基础 (部分)网络 SSH 更名 DNS解析 元字符

    nginx---> web ifconfig 查看网络配置信息 id add show 查看当前网卡信息(最小安装下) mtu 是指网卡传输的最大单元 单位:字节 网卡配置 临时配置 ifcon ...

  10. DDD学习笔录——提炼问题域之知识提炼与协作

    提炼问题域的意义 理解一个复杂问题域以便创建简单且有用的模型需要深入详尽的知识以及深刻的见解,这些只能通过与从内到外理解该领域的人协作得到.对模型的设计进行连续实验和探究正是DDD的能力所能实现的.只 ...