目录
一、代码实现
思路总结:若未登陆,则查询/userlist 、 /userdetail/1 、/时都会自动跳转/login界面。当session内存在user对象时才能正常访问
1-1 方式一、endpoint
from flask import Flask, request, render_template, redirect, session, url_for app = Flask(__name__) app.debug = True app.secret_key = 'test' # 模拟数据库内信息 USER_LIST = { 1: {'name': '张三', 'age': 18, 'gender': '男', 'text': "道路千万条"}, 2: {'name': '李四', 'age': 28, 'gender': '男', 'text': "安全第一条"}, 3: {'name': '王五', 'age': 18, 'gender': '女', 'text': "行车不规范"}, } def login_decorator(func, ): def wrapper(*args, **kwargs): if 'user' in session: res = func(*args, **kwargs) return res return redirect('/login') return wrapper @app.route('/') @login_decorator def index(): return 'ok' @app.route('/login', methods=['GET', 'POST'], endpoint='login') def login(): if request.method == 'GET': return render_template('login.html') else: # 取出表单提交的name数据 name = request.form.get('name') pwd = request.form.get('pwd') if name == 'test' and pwd == '123': # 登录成功 写session session['user'] = name return redirect('/userlist') else: # django中传字典,这里传**字典 # return render_template('login.html',**{'error':'用户名或密码错误'}) return render_template('login.html', error='用户名或密码错误') @app.route('/userlist', methods=['GET'], endpoint='user_list') @login_decorator def user_list(): return render_template('userlist.html', user_list=USER_LIST) @app.route('/use