- 用上下文处理器app_context_processor定义函数
- 获取session中保存的值
- 返回字典
- 在父模板中更新导航,插入登录状态判断代码。
- 注意用{% ... %}表示指令。
- {{ }}表示变量
- 完成注销功能。
- 清除session
- 跳转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> {% block title %} {% endblock %} </title> <link href="{{ url_for('static',filename='CSS/index.css') }}" rel="stylesheet"> <script src="{{ url_for('static',filename='JS/index.js') }}"></script> {% block head %} {% endblock %} </head> <body id="myBody"> <header> <nav> <ul> <li><a href="{{ url_for("homepage") }}">首页</a></li> <li><a href="{{ url_for("question") }}" title="问答" target="_blank">问答</a></li> <input type="text"id="search" name="search"> <button id="button1"type="submit">搜索</button> {% if username %} <li><a href="#"id="aaa">{{ username }}</a></li> <li><a href="{{ url_for("logout") }}">注销</a></li> {% else %} <li><a href="{{ url_for("login") }}">登录</a></li> <li><a href="{{ url_for("register") }}">注册</a></li> {% endif %} <li><img id="myOnOff" οnclick="mySwitch()" src="https://www.runoob.com/images/pic_bulbon.gif"height="30px" width="40px"></li>> </ul> </nav> </header> {% block main %} {% endblock %} </body> <div class="bottom" align="center"> Copyright@ 2017 个人版权,版权所有 </div> </html>
from flask import Flask,render_template,request,redirect,url_for,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db=SQLAlchemy(app) db = SQLAlchemy(app) # 创建用户模型 class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(20), nullable=False) password = db.Column(db.String(20), nullable=False) #db.create_all() @app.route('/') def homepage(): return render_template("homepage.html") @app.route('/login/',methods=['GET','POST']) def login(): if request.method == "GET": return render_template("login.html") else: username = request.form.get("username") password = request.form.get("password") user = User.query.filter(User.username == username).first() if user: if user.password == password: session['user'] = username sessionpermanent = True return redirect(url_for('homepage')) else: return 'password error' else: return 'username is not existed' @app.route("/register/",methods=['GET','POST']) def register(): if request.method == "GET": return render_template("register.html") else: username = request.form.get("username") password = request.form.get("password") user = User.query.filter(User.username == username).first() if user: return 'username existed.' else: user = User(username=username, password=password) db.session.add(user) db.session.commit() return redirect(url_for('login')) @app.context_processor def mycontext(): usern = session.get('user') if usern: return {'username':usern} else: return {} @app.route('/logout/') def logout(): session.clear() return render_template("homepage.html") @app.route("/question/") def question(): return render_template("question.html") if __name__ == '__main__': app.run(debug=True)
转载于:https://www.cnblogs.com/JaTae/p/7889874.html