django 获取用户的请求信息
常见的Http的请求方法:
- GET 向特定资源发出请求(访问网页)
- POST 向指定资源提交数据处理请求(提交表单,上传文件)
- OPTION 返回服务器针对特定资源所支持的请求方法
- PUT 向指定资源位置上传数据内容
- DELETE 请求服务器删除request-URL所标示的资源
- HEAD 与GET请求类似,返回的响应中没有具体内容,用于获取报头
- TRACE 回复和显示服务器收到的请求,用于测试和诊断
- CONNECT HTTP/1.1 协议中能够将连接改为管道方式的代理服务器。
下面是一些 常用的属性进行说明:
- COOKIE 获取客户端(浏览器)的Cookie信息,以字典形式表示,并且键值对都是字符串类型。
- FILES django.http.request.QueryDict 对象,包含所有的文件上传信息。
- GET 获取GET请求的请求参数,它是django.http.request.QueryDict对象,操作起来类似于字典。
- POST 获取POST请求的请求参数,它是django.http.QueryDict 对象,操作起来类似于字段。
- META 获取客户端(浏览器)的请求信息,以字典形式存储。
- method 获取当前请求的请求方式(GET 请求或POST 请求)。
- path 获取当前请求的路由地址。
- session 一个类似字段的对象,用来操作服务器的会话信息,可临时存放用户信息。
- user 当django启用AuthenticationMiddleware 中间件时才可用。它的值是内置数据模型User 的对象,表示当前登录的用户。如果用户当前没有登录,那么user将设为django.contrib.auth.models.AnonymousUser 的一个实例。
HttpRequest 类常用的方法:
- is_secure() 是否是采用HTTPS协议。
- is_ajax() 是否采用AJAX 发送HTTP 请求。判断原理是请求头中是否存在X-Requested-With:XMLHttpRequest。
- get_host() 获取服务器的域名。如果在访问的时候设有端口,就会加上端口号,如127.0.0.1:8000.
- get_full_path() 返回路由地址。如果该请求为GET请求并且设有请求参数,返回路由地址就会将请求参数返回,如/?user=jc&pw=123456。
- get_raw_uri() 获取完整的网址信息,将服务器的域名、端口和路由地址一并返回,如http://127.0.0.1:8000/?user=jc&pw=123456。
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): if request.method == "GET": #类方法的使用 print(request.is_secure()) print(request.is_ajax()) print(request.get_host()) print(request.get_full_path()) print(request.get_raw_uri()) #属性的使用 print(request.COOKIES) print(request.content_type) print(request.content_params) print(request.scheme) #获取GET请求的请求参数 print(request.GET.get("user","")) return render(request,"index.html") elif request.method == "POST": #获取POST 请求的请求参数 print(request.POST.get("user","")) return render(request,"index.html")
templates的 index.html
<html> <header> <title>hello world</title> </header> <body> <a href="{%url 'myApp:download1' %}">下载1</a> <a href="{%url 'myApp:download2' %}">下载2</a> <a href="{%url 'myApp:download3' %}">下载3</a> <form action="" method="POST" > {% csrf_token %} <input type="text" name="user" > <input type="submit" value="提交"> </form> </body> </html>