Django之request对象

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




原文地址:https://www.cnblogs.com/zhanghongfeng/p/8227997.html

时间: 2024-10-01 04:12:55

Django之request对象的相关文章

django的request对象和response对象

概述Django 使用 request 和 response 对象表示系统状态数据..当请求一个页面时,Django创建一个 HttpRequest 对象.该对象包含 request 的元数据. 然后 Django 调用相应的 view 函数(HttpRequest 对象自动传递给该view函数<作为第一个参数>), 每一个 view 负责返回一个 HttpResponse 对象. 本文档解释了 HttpRequest 和 HttpResponse 对象的 API.HttpRequest 对象

django框架-request对象

HTTP 应用的信息是通过 请求报文 和 响应报文 传递的,关于更多的相关知识,可以阅读<HTTP权威指南>获得. 其中 请求报文 由客户端发送,其中包含和许多的信息,而 django 将这些信息封装成了 HttpRequest 对象,该对象由 HttpRequest 类创建.每一个请求都会生成一个 HttpRequest 对象,django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象. 例如: def index(request): ..

Django中request和response中的属性方法详述

转载于 http://blog.chinaunix.net/uid-21633169-id-4332621.html Django 使用 request 和 response 对象表示系统状态数据.. 当请求一个页面时,Django创建一个 HttpRequest 对象.该对象包含 request 的元数据. 然后 Django 调用相应的 view 函数(HttpRequest 对象自动传递给该view函数<作为第一个参数>), 每一个 view 负责返回一个 HttpResponse 对象

django 获取request请求对象及response响应对象中的各种属性值

1 django request对象和HttpResponse对象 2 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) 3 HttpRequest.scheme 请求方案(通常为http或https) 4 HttpRequest.body 字节字符串,表示原始http请求正文 5 HttpRequest.path 字符串,表示请求的页面的完整路径,不包含域名 6 7 HttpRequest.get_host() 获取主机地址 8 9 HttpReques

Python - Django - request 对象

request.method: 获取请求的方法,例如 GET.POST 等 views.py: from django.shortcuts import render, HttpResponse # request 对象 def test(request): print(request.method) return render(request, "test.html") 访问页面 可以通过 request.method 查看请求方式 request.GET: 用来获取 URL 里面的

django的HTTPREQUEST对象

Django使用request和response对象 当请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法.任何view方法都应该返回一个HttpResponse对象. 我们在本书中大量使用这两个对象:本附录详细解释HttpRequest和HttpResponse对象. HttpRequest HttpRequest代表一个来自uesr-agent的

【Django】django 的request和response(转)

当请求一个页面时,Django 把请求的 metadata 数据包装成一个 HttpRequest 对象,然后 Django 加载合适的 view 方法,把这个 HttpRequest 对象作为第一个参数传给 view 方法.任何 view 方法都应该返回一个 HttpResponse 对象. HttpRequest HttpRequest 对象表示来自某客户端的一个单独的 HTTP 请求.HttpRequest 对象是 Django 自动创建的. 它的属性有很多,可以参考 DjangoBook

一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.

一.虚拟环境 ''' 解决版本共存 1. 用pycharm选择File点击NewProject然后选择virtualenv创建一个纯净环境 2. 打开下载的目录将venv文件夹下的所有文件(纯净的环境)copy到需要指定长期使用的文件夹下 3. 再次创建项目时,将该环境(指定长期使用的文件夹下Scripts文件夹中的python.exe文件)添加到pycharm环境选择(System Interpreter)中 4. 为该环境添加需要处理的版本共存包 ''' 二.路由配置主页与404 ''' 路

django学习——request.POST.get(‘key’) 、 request.GET.get(&#39;key&#39;, &#39;&#39;)

request.POST是用来接受从前端表单中传过来的数据,比如用户登录过程中传递过来的username.passwrod等字段.返回类型是字典: 在后台进行数据获取时,有两种方法(以username为例):request.POST[‘username’]与request.POST.get(‘username’),那么这两者有什么不同之处呢? 如果传递过来的数值不为空,那么这两种方法都没有错误,可以得到相同的结果.但是如果传递过来的数值为空,那么request.POST[‘username’]则