zoukankan      html  css  js  c++  java
  • 登录之后更新导航

    1. 用上下文处理器app_context_processor定义函数
      1. 获取session中保存的值
      2. 返回字典
    2. 在父模板中更新导航,插入登录状态判断代码。、
      1. 注意用{% ... %}表示指令。
      2. {{ }}表示变量
    3. 完成注销功能。
      1. 清除session
      2. 跳转

    主Python文件:

    from flask import Flask, render_template, request, url_for, session, redirect
    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()
    
    #数据添加方法
    # user=User(username='mis777789',password='g6666')
    # db.session.add(user)
    # db.session.commit()
    
    # 数据的修改方法
    # user = User.query.filter(User.username=='mis777789').first
    # user.password='0.0.0.0'
    # db.session.commit()
    
    # 数据的删除方法
    # user = User.query.filter(User.username=='mis777789').first()
    # db.session.delete(user)
    # db.session.commit()
    
    @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:
            username = request.form.get('id')  # 与html页面名字相同
            password = request.form.get('password')
            user = User.query.filter(User.username == username).first()
            print(username)
            if user:
                if user.password==password:
                     session['user']=username
                     session.permanent=True
                     return redirect(url_for('index'))
                else:
                    return '密码错误'
            else:
                return '用户不存在'
    
    
    @app.route('/regis',methods=['GET','POST'])
    def register():
        if request.method=='GET':
    
            return render_template('Zhuce.html')
        else:
    
            username=request.form.get('zcid')#与html页面名字相同
            password=request.form.get('zcpassword')
            user=User.query.filter(User.username==username).first()
            if user:
                return 'exit'
            else:
                user=User(username=username,password=password)
                db.session.add(user)
                db.session.commit()
                return redirect(url_for('login'))
    
    @app.context_processor
    def mycontext():
        username=session.get('user')
        if username:
            return {'username':username}
        else:
            return {}
    
    @app.route('/logout')
    def logout():
        session.clear()
        return render_template('index.html')
    
    
    
    @app.route('/fankui')
    def fankui():
        return render_template("page_fankui.html")
    
    if __name__ == '__main__':
        app.run(debug=True)

    父模板中注销和登录:

            <ul class="nav navbar-nav navbar-right">
                {% if username %}
                    <li><a href="#"><span class="glyphicon glyphicon-user"></span> {{ username }}</a></li>
                    <li><a href={{ url_for("logout") }}><span class="glyphicon glyphicon-log-in"></span> 注销</a></li>
                {% else %}
                    <li><a href={{ url_for("register") }}><span class="glyphicon glyphicon-user"></span> 注册</a></li>
                    <li><a href={{ url_for("login") }}><span class="glyphicon glyphicon-log-in"></span> 登录</a></li>
                {% endif %}
            </ul>

    效果图:

  • 相关阅读:
    实用产品规划
    产品经理对用户的调研
    产品经理用户研究
    竞品分析方案
    产品竞品分析
    Mybatis Plus
    shiro
    Spring cloud
    Spring Boot
    Redis入门(二)
  • 原文地址:https://www.cnblogs.com/Naiky/p/7889083.html
Copyright © 2011-2022 走看看