前后端交互的实现就是通过前后台之间数据的交换过程,所以如何捕获前端url中的参数就是学习django中很重要的一步。而数据交换的过程我们使用术语称为:request和response

 

在编辑视图函数时,我们都会做一个request形参的入参,这个形参就是HttpRequest类的对象,包含了浏览器请求的信息

一、request的属性

path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分,仅显示url部分

method:一个字符串,表示请求使用的http方法

encoding:一个字符串,表示提交的数据的编码方式

GET:QueryDict对象,类似于字典,包含get请求方式的所有参数

POST:QueryDict对象,类似于字典,包含post请求方式的所有参数

FILES:一个类似于字典的对象,包含所有的上传文件

COOKIES:一个标准的python字典,包含所有cookie,键和值都为字符串

session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当django启用会话的支持时才可用

二、request中POST和GET属性演示

获取POST和GET请求中的参数有两种方法:

1、通过get()方法,入参请求参数名:request.POST.get(参数名) / request.GET.get(参数名)

2、类似于字典,通过访问key来获取value:request.POST[参数名]/request.GET[参数名]

需求:完成一个简单的登录效果,如果用户登录成功就跳转到首页,否则继续停留在登陆页面

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>登录</title>
 6 </head>
 7 <body>
 8 <form method="post" action="/login_check">
 9     用户名:<input type="text" name="username" value="{{ username }}"><br>
10     密码:<input type="password", name="password"><br>
11     <input type="checkbox" name="remember">记住用户名<br>
12     <input type="submit" value="登录">
13 </form>
14 </body>
15 </html>
登录页面:/login

 

 1 def login(request):
 2     """登录页面"""
 3     return render(request, 'bookset/login.html')
 4 
 5 
 6 def login_check(request):
 7     """登录校验"""
 8     # 1、获取提交的用户数据
 9     name = request.POST.get('username')
10     # name = request.POST['username']
11     password = request.POST.get('password')
12     # 进行登录的校验
13     if name == 'xiaoming' and password == '123':
14         # 用户登录成功,跳转到首页
15         response = redirect('/index')
16         return response
17     else:
18         # 用户名密码错误跳转回登录页面
19         return redirect('/login')
视图函数

最后,代码效果演示截图就不添加了,各位可以自行尝试下

posted on 2020-03-18 20:56  Monkey大圣  阅读(722)  评论(0编辑  收藏  举报