内容简介:使用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身份验证的方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Remote
Jason Fried、David Heinemeier Hansson / Crown Business / 2013-10-29 / CAD 26.95
The “work from home” phenomenon is thoroughly explored in this illuminating new book from bestselling 37signals founders Fried and Hansson, who point to the surging trend of employees working from hom......一起来看看 《Remote》 这本书的介绍吧!