内容简介:使用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身份验证的方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
《生活大爆炸》之科学揭秘
乔治·毕姆 / 韩准、徐漪、江业华、叶夜 / 世界图书出版公司 / 2012-12 / 49.00元
《 之科学揭秘:GEEK探索频道》对流行美剧《生活大爆炸》进行“深度解密”,重点在解读剧中涉及的流行文化及科学元素。正如我们所知,《生活大爆炸》是一部“技术含量很高”的肥皂剧。不光是普通观众,科学家也爱《生活大爆炸》。《 之科学揭秘:GEEK探索频道》中,科学家详尽为你解释了电视剧中出现的科学道理和典故。包括谢尔顿的高深弦理论、霍华德的花生过敏是怎么回事、如果你和谢尔顿的妈妈有同样的信仰该如何看待......一起来看看 《《生活大爆炸》之科学揭秘》 这本书的介绍吧!