登录之后更新导航

登录之后更新导航

  1. 用上下文处理器app_context_processor定义函数
    1. 获取session中保存的值
    2. 返回字典
  2. 在父模板中更新导航,插入登录状态判断代码。
    1. 注意用{% ... %}表示指令。
    2. {{ }}表示变量
  3. 完成注销功能。
    1. 清除session
    2. 跳转
      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 base():
          return render_template("base.html")
      
      @app.context_processor
      def mycontext():
          username=session.get('user')
          if username:
              return {'username':username}
          else:
              return{}
      
      @app.route('/logout')
      def logout():
          session.clear()
          return redirect(url_for('base'))
      
      @app.route('/denglu/', methods=['GET', 'POST'])
      def denglu():
          if request.method == 'GET':
              return render_template("denglu.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
                      return redirect(url_for('base'))
                  else:
                      return '密码错误'
              else:
                  return '用户名不存在'
      
      @app.route('/zhuce/', methods=['GET', 'POST'])
      def zhuce():
          if request.method == 'GET':
              return render_template("zhuce.html")
          else:
              username = request.form.get('username')
              password = request.form.get('password')
              user = User.query.filter(User.username == username).first()
              if user:
                  return '用户名已存在'
              else:
                  user = User(username=username, password=password)
                  db.session.add(user)  # 数据库,添加操作
                  db.session.commit()
                  return redirect(url_for('denglu'))
      
      @app.route('/fabu/')
      def fabu():
          return  render_template('question.html')
      
      
      
      if __name__=='__main__':
          app.run(debug=True)
      import os
      
      SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@127.0.0.1:3306/mis15?charset=utf8'
      SQLALCHEMY_TRACK_MODIFICATIONS = False
      
      SECRET_KEY =os.urandom(24)
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>{% block title %}
             {% endblock %}维尼乐园</title>
      
      
      <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/20.css') }}">
      <script src="{{ url_for('static',filename='js/1.js') }}"></script>
      {% block head %}
      {% endblock %}
      
      </head>
      
      <header class="navbar-wrapper">
          <div class="navbar navbar-black">
              <div class="container cl">
                  <nav class="nav navbar-nav nav-collapse" role="navigation" id="Hui-navbar">
                      <ul class="cl">
                          <li><a class="logo navbar-logo f-l mr-10 hidden-xs" href="base.html">首页</a></li>
                          <li><span class="logo navbar-slogan f-l mr-10 hidden-xs">简单 &middot; 快乐 &middot; 维尼世界</span></li>
      
                      {% if username %}
                          <li><a href="#">{{ username }}</a></li>
                          <li><a href="{{ url_for('logout') }}">注销</a></li>
                      {% else %}
                          <li><a href="{{ url_for('denglu')}}">登录</a></li>
                          <li><a href="{{ url_for('zhuce') }}">注册</a></li>
                      {% endif %}
                      <li><a class="#">联系我们</a></li>
                      </ul>
                  </nav>
              </div>
      {% block main %}
          <div class="container">
              <canvas id="c1"></canvas>
              <canvas id="c2"></canvas>
              <div class="snowglobe"></div>
              <div class="highlight"></div>
              <div class="base"></div>
              <div class="baseTop"></div>
              <div class="baseShadow"></div>
              <div class="tree"></div>
              <div class="tree2"></div>
              <div class="tree3"></div>
              <div class="tree4"></div>
              <div class="roof"></div>
              <div class="cabin"></div>
      
       {% endblock %}
              <footer class="footer mt-20">
                  <div class="container-fluid">
                      <nav> <a href="#" target="_blank">关于我们</a> <span class="pipe">|</span> <a href="#" target="_blank">联系我们</a> <span class="pipe">|</span> <a href="#" target="_blank">法律声明</a> </nav>
                      <p>Copyright &copy;2016 H-ui.net All Rights Reserved. <br>
                          <a href="http://www.miitbeian.gov.cn/" target="_blank" rel="nofollow">京ICP备1000000号</a><br>
                      </p>
                  </div>
              </footer>
              <nav class="navbar-userbar hidden-xs"></nav>
          </div>
          </div>
          </header>
      </html>

       

       



posted @ 2017-11-24 15:04 林丹宜 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值