request.method,request.POST,request.GET


登录注册




    
    Title
    {% load static %}
    
    


登录

username:

password:

未指定提交方式,默认按照get方式。

from表单action参数

  1. 不写,默认向当前所在url提交数据
  2. 全写,指名道姓
  3. 只写后缀/自定义urls对应关系/

在前期我们使用django提交post请求的时候 需要取配置文件中注释掉一行代码

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

无论是post请求还是get请求都将触发login视图函数。

get请求和post请求应该有不同的处理机制

  • get请求只需获取页面
  • post请求获取用户数据

request对象方法初始

请求相关的数据对象,里面有很多简易的方法

如何获取当前请求方式: request.method

from django.shortcuts import render, HttpResponse, redirect


# Create your views here.
# 视图函数必须接收一个形参(request)
def login(request):
    """
    get请求和post请求应该有不同的处理机制
    get请求只需获取页面
    post请求获取用户数据
    :param request:
    :return:
    """
    print(request.method)
    if request.method == 'POST':
        return HttpResponse("收到")
    return render(request,'login.html')

返回请求方式,并且是全大写的字符串方式

![截屏2022-02-25 23.22.59](/Users/macintoshhd/Desktop/截屏2022-02-25 23.22.59.png)

获取用户数据 : request.POST 与 request.GET

获取用户post请求提交的普通数据,不包含文件。

from django.shortcuts import render, HttpResponse, redirect


# Create your views here.
# 视图函数必须接收一个形参(request)
def login(request):
    """
    get请求和post请求应该有不同的处理机制
    get请求只需获取页面
    post请求获取用户数据
    :param request:
    :return:
    """
    print(request.POST)
    print(request.method)
    if request.method == 'POST':
        return HttpResponse("收到")
    return render(request,'login.html')

服务端返回客户端请求数据:request.POST.get()

字典的形式,键取决于前端name属性

[25/Feb/2022 15:29:40] "GET /login/ HTTP/1.1" 200 763

GET
 # 字典
POST
[25/Feb/2022 15:29:42] "POST /login/ HTTP/1.1" 200 6

并且获取的数据类型均为字符串(str)

[25/Feb/2022 15:35:15] "GET /login/ HTTP/1.1" 200 764

POST
junjie 
[25/Feb/2022 15:35:16] "POST /login/ HTTP/1.1" 200 6

再次验证

login.html




    
    Title
    {% load static %}
    
    


登录

username:

password:

111 222 333

views.py

from django.shortcuts import render, HttpResponse, redirect


# Create your views here.
# 视图函数必须接收一个形参(request)
def login(request):
    """
    get请求和post请求应该有不同的处理机制
    get请求只需获取页面
    post请求获取用户数据
    :param request:
    :return:
    """
    print(request.POST)
    print(request.method)
    hobby = request.POST.get('hobby')
    print(hobby,type(hobby))
    if request.method == 'POST':
        return HttpResponse("收到")
    return render(request,'login.html')

服务端接收客户端返回信息


GET
None 
[25/Feb/2022 15:40:04] "GET /login/ HTTP/1.1" 200 1020

POST
333 
[25/Feb/2022 15:40:04] "POST /login/ HTTP/1.1" 200 6

由此得出:request.POST.get() ,只获取列表的最后一个元素

直接将列表取出 : request.POST.getlist()

username = request.POST.getlist('username')
print(username,type(username))
GET
[] 

POST
['111', '222', '333'] 

获取用户提交的get请求数据: request.GET

request.GET.get()  # 只获取列表最后一个元素
request.GET.getlist()  # 直接将列表取出
"""
get请求携带的数据是有大小限制的 大概好像只有4KB左右
而post请求则没有限制
"""