内容简介:使用flask框架创建一个简单的用户登录页面,并使用装饰器完成用户身份验证1、先使用flask框架完成一个基础的页面,创建一个app.py文件2、使用模板生成一个简单的登录页面,在项目路径下创建一个templates目录用于存放html页面
使用flask框架创建一个简单的用户登录页面,并使用装饰器完成用户身份验证
1、先使用flask框架完成一个基础的页面,创建一个app.py文件
from flask import Flask
app = Flask(__name__)
@app.route('/login',methods=['GET','POST')
def login():
return 'Hellow World!'
if __name__ == '__main__':
app.run()
2、使用模板生成一个简单的登录页面,在项目路径下创建一个templates目录用于存放html页面
创建登录的html页面login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用户登录</h1>
<form method="post">
<input type="text" name="user">
<input type="text" name="pwd">
<input type="submit" value="登录">{{error}}
</form>
</body>
</html>
修改login视图函数,渲染模板文件,如果判断用户名密码正确怎进行跳转
from flask import Flask, render_template
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == "GET":
return render_template('login.html')
else:
user = request.form.get("user")
pwd = request.form.get("pwd")
if user == 'zhengdazhi' and pwd == '123':
return redirect('http://www.zhengdazhi.com')
return render_template('login.html', error='用户名或密码错误')
3、创建一个主页的html模板index.html
flask的模板语言使用{{ }} 来获取变量,使用{% %} 来执行流程控制语句
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用户列表</h1>
<table>
{% for k,v in user_dict.items() %}
<tr>
<td>{{k}}</td>
<td>{{v.name}} {{v['name']}} {{v.get('name')}}</td>
<td><a href="detail/{{k}}">查看详细</a></td>
</tr>
{% endfor %}
</table>
</body>
</html>
创建主页的视图函数index
# 创建一些测试数据
USERS = {
1: {'name': '张三', 'age': 18, 'gender': '男'},
2: {'name': '李四', 'age': 18, 'gender': '男'},
4: {'name': '王五', 'age': 18, 'gender': '男'}
@app.route('/', methods=['GET'])
def index():
return render_template('index.html', user_dict=USERS)
4、创建一个详细页面的模板文件detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> 详细信息</h1>
<div>
{{info.name}}
{{info.age}}
</div>
</body>
</html>
创建详细页面的视图函数detail
@app.route('/detail/<int:nid>', methods=['GET'])
def detail(nid):
# return str(nid)
info = USERS.get(nid)
return render_template('detail.html', info=info)
5、修改登录视图函数,在判断用户名和密码正确后写入一个cookie
from flask import Flask, render_template, request, redirect, session
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == "GET":
return render_template('login.html')
else:
user = request.form.get("user")
pwd = request.form.get("pwd")
if user == 'zhengdazhi' and pwd == '123':
<span style="color: #ff0000;">session['user_info'] = user</span>
return redirect('http://www.zhengdazhi.com')
return render_template('login.html', error='用户名或密码错误')
6、创建一个验证登录的装饰器函数,用来判断用是否登录,检测浏览器中是否有cookie,如果没有则跳转到登录页面
def check_session(func):
def inner(*args, **kwargs):
if not session.get('user_info'):
return redirect(location='/login/')
return func(*args, **kwargs)
return inner
7、在详情页面视图函数 detail上添加身份验证的装饰器
@app.route('/detail/<int:nid>', methods=['GET'])
<span style="color: #ff0000;">@check_session</span>
def detail(nid):
# return str(nid)
info = USERS.get(nid)
return render_template('detail.html', info=info)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Kubernetes 身份管理:身份验证
- Kubernetes身份验证机制演示
- Mongodb常用的身份验证方式
- HTTP身份验证渗透测试指南
- 通过足迹进行身份识别 AI 将身份验证技术发挥到了极致
- 技术分享 | 多种测试HTTP身份验证的方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。