request方法能解决什么问题?怎么用 ?
解决了如何判断请求的方式是POST还是GET。用句点号 .
主要是request.GET.get()和request.GET.list()方法。前者获取列表中的最后一个元素,后者获取整个列表,而request.GET是字典
步骤1:注释操作
步骤2:request是一个对象,里面含有POST和GET的属性和方法
步骤3:如何获取请求数据?
如图所示:这是GET请求的设置:
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def login(request):
username = request.GET.get("username")
password = request.GET.get("password")
#如何获取GET请求的数据呢?在login.html里的method里改一下方法
print(request.GET)
print(request.GET.get("username"),type(request.GET.get("username")))
print(request.GET.getlist("username"),type(request.GET.getlist("username")))
"""
<QueryDict: {'username': ['yjg', 'admin'], 'password': ['111', '999']}>
admin <class 'str'>获取最后一个元素
['yjg', 'admin'] <class 'list'>获取整个列表
"""
return render(request,"login.html")
改成POST请求,如图所示:
此时浏览器的数据是POST请求获取的,代码如下
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def login(request):
if request.method == "POST":
# print(request.POST)
#<QueryDict: {'username': ['yjg', 'admin'], 'password': ['111', '666']}>POST请求的结果
username = request.POST.get("username")
password = request.POST.get("password")
print(f"{username}-{type(username)}\n{password}-{type(password)}")
"""
POST请求的get方式获取的结果:
admin-<class 'str'>获取列表的最后一个元素
111-<class 'str'>获取列表的最后一个元素
"""
username1 = request.POST.getlist("username")
password1 = request.POST.getlist("password")
print(f"{username1}-{type(username1)}\n{password1}-{type(password1)}")
"""
POST请求的getlist方式获取的结果:
['yjg', 'admin']-<class 'list'>获取整个列表
['666', '111']-<class 'list'>获取整个列表
"""
return HttpResponse("收到了")
# print(request.GET)
# <QueryDict: {}>GET请求的结果
return render(request,"login.html")
总结:
request方法方法解决了获取GET请求数据和POST请求的数据的问题。
不过细节是:
在login.html文件里要做如下设置:
第一次:
第二次:
接着是request.GET是字典,request.GET.get()和request.GET.list()方法。前者获取列表中的最后一个元素,后者获取整个列表。