django学习——request用法

Django 使用Request 对象和Response 对象在系统间传递状态。

当请求一个页面时,Django会建立一个包含请求元数据的 HttpRequest 对象。 当Django 加载对应的视图时,HttpRequest 对象将作为视图函数的第一个参数。每个视图会返回一个HttpResponse 对象。

以下列举常用的几种属性:

1、request.user

一个AUTH_USER_MODEL 类型的对象,表示当前登录的用户。你可以通过is_authenticated() 区分它们,像这样:

if request.user.is_authenticated():
    # Do something for logged-in users.
else:
    # Do something for anonymous users.

如果登录的话,可以通过request.user获取当前登录的用户信息。

2、request.method

一个字符串,表示请求使用的HTTP 方法。必须使用大写。例如:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()

3、request.GET/POST

request.GET: 一个类似于字典的对象,包含HTTP GET 的所有参数。

request.POST: 一个包含所有给定的HTTP POST参数的类字典对象,提供了包含表单数据的请求。

在HttpRequest 对象中,GET 和POST 属性是django.http.QueryDict 的实例,它是一个自定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单元素传递多个值给同一个键, 是一个显著的例子。

request.POST 和request.GET 的QueryDict 在一个正常的请求/响应循环中是不可变的。若要获得可变的版本,需要使用.copy()。

通常的用法是通过request.POST.get() 获得前端表单中的数据:

def myapp(request):
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        ...

通过request.GET.get() 方法获取url传递的参数:

views.py

#url 为 127.0.0.1:8000/index/?sort=hot
def myapp(request):
    if request.method == 'GET':
        sort = request.GET.get('sort', '')
        ...

4、request.path

一个字符串,表示请求的页面的完整路径,不包含域名。

base.html

<li {% if request.path == '/' %}class="active"{% endif %}><a href="{% url 'index' %}">首页a>li>

还可以通过过滤器request.path|slice:'x' 得到域名中指定的长度,从而进行判断。

5、request.META

request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常是浏览器的名称和版本号)。

我们可以用request.META.get()方法来得到其中需要的信息,但是前提条件是我们需要知道Header中存在哪些数据,如果不存在的话,需要对其进行报错处理。

我们可以通过如下方式知道Header中存在哪些数据:

values = request.META.items()
for i in values:
    print(i)

……

更多request的用法,参见官方文档:点此进入

你可能感兴趣的:(django,django)