Python-Flask实现登录
- Python-Flask实现登录
- 项目结构
- Flask蓝图路由
- 项目代码
Python-Flask实现登录
项目结构
Flask蓝图路由
from flask import Blueprint, render_template, request, sessionac = Blueprint('account', __name__)@ac.route('/login', methods=['GET', 'POST'])
def login():
项目代码
- app.py
from flask2 import create_appapp = create_app()
if __name__ == '__main__':app.run()
*init.py
import uuidfrom flask import Flaskdef create_app():app = Flask(__name__)app.secret_key = str(uuid.uuid4())# 注册蓝图from .views import accountfrom .views import orderapp.register_blueprint(account.ac)app.register_blueprint(order.od)return app
*account.py
from flask import Blueprint, render_template, request, session
from werkzeug.utils import redirectfrom utils import dbac = Blueprint('account', __name__)@ac.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'GET':return render_template("login.html")# 获取表单提交的手机号密码role = request.form.get("role")mobile = request.form.get("mobile")pwd = request.form.get("pwd")user_dict = db.fetchone("select * from user where role = %s and mobile = %s and password = %s", [role, mobile, pwd])print(user_dict)if user_dict:session["user_info"] = {'role': user_dict['role'], 'mobile': user_dict['mobile'], 'real_name': user_dict['real_name']}return redirect("/order/list")return render_template("login.html", error="用户名密码错误")
*order.py
from flask import Blueprint, sessionod = Blueprint('order', __name__)@od.route('/order/list')
def order_list():user_info = session.get("user_info")print(user_info, type(user_info))return "订单列表"
- login.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title>
</head>
<body>
<h1>用户登录</h1>
<form method="post" action="/login"><select name="role"><option value="1">客户</option><option value="2">管理员</option></select><input type="text" name="mobile" placeholder="手机号"/><input type="password" name="pwd" placeholder="密码"/><input type="submit" value="提交"><span style="color:red">{{ error }}</span>
</form>
</body>
</html>
- db.py
import pymysql
from dbutils.pooled_db import PooledDB
from pymysql import cursorsPOOl = PooledDB(creator=pymysql,maxconnections=10,mincached=2,maxcached=5,blocking=True,setsession=[],ping=0,host="127.0.0.1",port=3306,user="root",passwd="root",charset="utf8",db="python-flask"
)def fetchone(sql, params):conn = POOl.connection()cursor = conn.cursor(cursor=cursors.DictCursor)cursor.execute(sql, params)result = cursor.fetchone()cursor.close()conn.close()return result