文章目录
- 案例 用户登录
- 安全认证
- django中的隐藏值
- 获得用户账户密码
- 空值
- 往期回顾
案例 用户登录
安全认证
如果提交数据后,发现并没有跳转到自己想要的界面,是因为django比Flask多一层 ”安全机制“ 的东西
解决方法:
{% csrf_token %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用户登录</h1>
<form action="/login/" method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<input type="submit" value="提交">
</form>
</body>
</html>
- 返回来的值
<QueryDict: {'csrfmiddlewaretoken': ['BwGR3jENNi8J2o15BjaKccOOlzVDwteRpfJhAO6y6lkUIeZNwAYVSDSqdTL2R4No'], 'user': ['132'], 'password': ['324']}>
django中的隐藏值
QueryDict: {'csrfmiddlewaretoken': ['BwGR3jENNi8J2o15BjaKccOOlzVDwteRpfJhAO6y6lkUIeZNwAYVSDSqdTL2R4No']
在他返回信息时后他会自带的
- 作用
- 如果是正常登录,则会给你返回这个值
- 如果是非法访问,则不会给你数据
- django内部会自己校验这个值
获得用户账户密码
在views.py
界面上、
requset.POST.get('键(需要获取的)')
username = requset.POST.get('user')
userpassword = requset.POST.get('password')
if username == '123' and userpassword =='234':
print(requset.POST)
return HttpResponse("登录成功")
else:
return HttpResponse("登录失败")
空值
- 当有人给他传递值的时候,他才会显现
eg:
{{ 自己定义的一个值 }}
平常状态不显现,当有人给他传递参数的时候他才会显现
html中:
<form action="/login/" method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<input type="submit" value="提交">
<div style="color: red">{{ error_msg }}</div>
</form>
在views.py
界面上
return render(requset, "login.html", {"error_msg": "用户名或密码错误"})
总案例:
from django.shortcuts import render, HttpResponse, redirect
# Create your views here.
# 注意:函数默认要有个参数
def index(request):
return render(request, "text.html")
def login(requset):
if requset.method == "GET":
return render(requset, "login.html")
else:
# 如果是POST的请求
username = requset.POST.get('user')
userpassword = requset.POST.get('password')
if username == '123' and userpassword =='234':
print(requset.POST)
return HttpResponse("登录成功")
else:
return render(requset, "login.html", {"error_msg": "用户名或密码错误"})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用户登录</h1>
<form action="/login/" method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<input type="submit" value="提交">
<div style="color: red">{{ error_msg }}</div>
</form>
</body>
</html>
往期回顾
1.【快速开发网站】
2.【浏览器能识别的标签1】
3.【浏览器能识别的标签2】
4.【浏览器能识别的标签3】
5.【浏览器能识别的标签4】
6.【案例1:用户注册】
7.【案例2:用户注册改进】
8.【快速了解 CSS】
9.【常用选择器概念讲解】
10.【CSS基础样式介绍1】
11.【CSS基础样式介绍2】
12.【CSS基础样式介绍3】
13.【CSS基础样式介绍3】
14.【案例 小米商城头标】
15.【案例 小米商城头标总结】
16.【案例 小米商城二级菜单】
17.【案例 商品推荐部分】
18.【伪类简单了解】
19.【position】
20.【案例 小米商城中app图标代码】
21.【边框及总结】
22.【BootSrap初了解】
23.【BootSrap的目录栏】
24.【BootSrap的栅格系统】
25.【案例 博客案例】
26.【案例 登录】
27.【案例 后台管理样例】
28.【图标】
29.【BootStrap依赖】
30.【javascript初了解】
31.【jJavaScript的变量】
32.【JavaScript的字符串类型】
33.【JavaScript的数组介绍】
34.【案例 动态数据】
35.【javascript 对象(字典)】
36.【案例 动态表格】
37.【Javascript的条件语句和函数】
38.【DOM初了解】
39.【DOM的事件了解】
40.【jQuery初了解】
41.【jQuery寻找标签】
42.【jQuery寻找标签2】
43.【jQuery寻找标签(间接寻找)】
44.【案例 菜单的切换】
45.【案例 只能打开一个菜单】
46.【jQuery 简单操作】
47.【案例 动态创建数据】
48.【案例 点击获取文本】
49.【案例 点击删除文本】
50.【案例 表格操作】
51.【案例 添加页面】
52.【初识MySQL】
53.【MySQL命令介绍一】
54.【MySQL命令介绍二】
55.【MySQL命令介绍三】
56.【案例:员工管理】
57.【案例 Flask+MySQL新增用户】
58.【案例 Flask+MySQL查询所有用户】
59.【初识 django】
60.【django的快速上手】
61.【django的模板语法】
62.【django的获取请求与响应】