登录之后更新导航
Posted GT3
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了登录之后更新导航相关的知识,希望对你有一定的参考价值。
- 用上下文处理器app_context_processor定义函数
- 获取session中保存的值
- 返回字典
- 在父模板中更新导航,插入登录状态判断代码。
- 注意用{% ... %}表示指令。
- {{ }}表示变量
- 完成注销功能。
- 清除session
- 跳转
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) 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 index(): return render_template(‘index.html‘) @app.route(‘/login/‘,methods=[‘get‘,‘post‘]) def login(): if request.method == ‘GET‘: return render_template(‘login.html‘) else: usern = request.form.get(‘username‘) passw = request.form.get(‘password‘) user = User.query.filter(User.username == usern,User.password==passw).first() if user: session[‘user‘]=usern session.permanent=True return redirect(url_for(‘index‘)) else: return u‘error username or password‘ @app.route(‘/regist/‘,methods=[‘get‘,‘post‘]) def regist(): if request.method==‘GET‘: return render_template(‘regist.html‘) else: usern=request.form.get(‘username‘) passw =request.form.get(‘password‘) user=User.query.filter(User.username==usern).first() if user: return u‘username existed‘ else: user1=User(username=usern,password=passw) db.session.add(user1) db.session.commit() return redirect(url_for(‘login‘)) @app.route(‘/logout/‘) def logout(): session.clear() return redirect(url_for(‘index‘)) @app.context_processor def context(): username = session.get(‘user‘) if username: return {‘username‘:username} else: return() if __name__ == ‘__main__‘: app.run(debug=True)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> 首页 {% block denglutitle %}{% endblock %} {% block zhucetitle %}{% endblock %} {% block tupiantitle %}{% endblock %} </title> <link rel="stylesheet" href="{{ url_for(‘static‘,filename=‘base.css‘) }}"> <script src="{{ url_for(‘static‘,filename=‘base.js‘) }}"></script> {% block dengluhead %}{% endblock %} {% block zhucehead %}{% endblock %} {% block tupianhead %}{% endblock %} </head> <body id="mybody"> <nav class="navbar navbar-inverse" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="{{ url_for(‘index‘) }}">首页</a> </div> <div> <ul class="nav navbar-nav"> <li><a href="{{ url_for(‘fabu‘) }}" onclick="">发布</a></li> </ul> </div> <div> <input type="text" name="user" id="user" placeholder="请输入内容"> <input type="button" value="search" class="btn btn-success" onclick=""> </div> <div> <ul class="nav navbar-nav"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> set<b class="caret"></b> </a> <ul class="dropdown-menu"> <li><a href="#">favourites</a></li> <li><a href="#">share</a></li> <li><a href="#">search</a></li> <li class="divider"></li> <li><a href="#">good</a></li> </ul> </li> <li><a href="#">||</a></li> {% if username %} <li><a href="#" onclick="">{{ username }}</a></li> <li><a href="{{ url_for(‘logout‘) }}" onclick="">logout</a></li> {% else %} <li><a href="{{ url_for(‘login‘) }}" onclick="">login</a></li> <li><a href="{{ url_for(‘zhuce‘) }}" onclick="">regist</a></li> {% endif %} </ul> </div> <div style="float: left"> <img id="myonoff" onclick="mySwitch()" src="http://www.runoob.com/images/pic_bulbon.gif" style="width:50px" > </div> </div> </nav>
以上是关于登录之后更新导航的主要内容,如果未能解决你的问题,请参考以下文章