登录之后更新导航

  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 import Flask
      from flask_sqlalchemy import SQLAlchemy
      import config
      
      app = Flask(__name__)
      #app.config['SECRET_KEY'] = '1234567'
      app.config.from_object(config)
      db = SQLAlchemy(app)
      
      class User(db.Model):
          __tablename__ = 'user_test'
          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)
          nickname = db.Column(db.String(20))
          tel = db.Column(db.String(20))
      
      #db.create_all()
      
      #2.在表中插入一条记录
      #user = User(username = 'mis1',password = '124', nickname='wk')
      #db.session.add(user)
      #db.session.commit()
      
      
      #3.去表中查询用户名对应的密码和接下来用户输入的密码是否相匹配
      #user = User.query.filter(User.username == 'mis1234').first()
      #print(user)
      #print(user.id,user.username)#输出查找到的用户名的id,密码等.
      
      #修改查询到的用户名的密码等
      #user = User.query.filter(User.username == 'mis1234').first()
      #user.password = '123'
      #db.session.commit()
      
      #再次插入一条记录
      #user = User(username = 'wkkkkkk',password = '123456', nickname='kk')
      #db.session.add(user)
      #db.session.commit()
      
      #删除一条记录
      #user = User.query.filter(User.username == 'mis1234').first()
      #db.session.delete(user)
      #db.session.commit()
      
      
      
      
      @app.route('/')
      def index():
          return render_template('base.html')
      
      @app.route('/login/',methods=['GET','POST'])
      def login():
          if request.method == 'GET':
              return render_template('login.html')
          else:
              usern = request.form.get('uname')
              passw = request.form.get('upass')
              user = User.query.filter(User.username==usern).first()
              if user:
                  if user.password == passw:
                      session['user'] = usern;
                      return redirect(url_for('index'))
                  else:
                      return 'password error!'
              else:
                  return 'username is not exister!'
      
      
      
      @app.route('/register/',methods=['GET','POST'])
      def register():
          if request.method =='GET':
              return  render_template('register.html')
          else:
              usern = request.form.get('uname')
              teln = request.form.get('number')
              passw = request.form.get('upass')
              user = User.query.filter(User.username==usern).first()
              if user:
                  return 'username existed'
              else:
                  user1= User(username=usern,tel=teln,password=passw)
                  db.session.add(user1)
                  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 redirect(url_for('index'))
      
      
      @app.route('/question/',methods=['GET','POST'])
      def question():
          return render_template('question.html')
      
      if __name__ == '__main__':
          app.run(debug=True)
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <!--<title>父模板</title>-->
          <title>{% block title%}
          {% endblock %} wk </title>
          <!--<script src="../static/js/base.js" type="text/javascript"></script>-->
      
          <script src="{{ url_for('static',filename='js/base.js') }}" type="text/javascript"></script>
          <link rel="stylesheet" href="../static/css/base.css">
          {% block head %}
          {% endblock %}
      
      
      
      
      </head>
      <body id="myBody">
      <nav id="nav"  >
          <!--<img id="on_off" onclick="mySwitch()" src="http://www.runoob.com/images/pic_bulbon.gif" > -->
      
          <img id="on_off" onclick="mySwitch()" src="{{ url_for('static',filename='image/switchon.gif') }}" >
      
      
          <a id="href" href="">学生</a>
          <a id="href" href="">教师</a>
          <a id="href" href="">校友</a>
          <input id="search" type="text" name="search">
          <input id="button1" type="button" name="sousuo" value="搜索">
          <!--<input  onclick="window.location.replace('login.html')"  id="button" type="button" name="login" value="登录">
          <input   onclick="window.location.replace('register.html')" id="button" type="button" name="login" value="注册"><br>-->
      
          <!--<a id="href" href="{{ url_for('login') }}">login</a>
          <a id="href" href="{{ url_for('register') }}">register</a>
          <a id="href" href="{{ url_for('question') }}">question</a> -->
      
          {% if username %}
              <a id="href" href="#">{{ username }}</a>
              <a id="href" href="{{ url_for('logout')}}">logout</a>
          {% else %}
              <a id="href" href="{{ url_for('login') }}">login</a>
              <a id="href" href="{{ url_for('register') }}">register</a>
      
          {% endif %}
      
      </nav>
      
      
      <div class="daohang">
          <div class="map">
              用户导航
              <hr>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <!--<img src="http://www.gzcc.cn/2016/images/yhdh/01.jpg">-->
                  <img src="{{ url_for('static',filename='image/01.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/html/xueyuanrongyu/">学校荣誉</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/02.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/html/banxuechengguo/">师生获奖</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/03.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/html/xygk/ldgh/">领导关怀</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/08.jpg') }}">
              </a>
              <div class="desc"><a href="http://i.gzcc.cn" target="_blank">数字广商</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/05.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/html/xygk/xiaoyuanfengguang/">画说校园</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/06.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/html/shipinxiaoyuan/">视频校园</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/07.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/quanjingxiaoyuan/tour.html">全景校园</a> </div>
          </div>
          <div class="img">
              <a href="http://www.gzcc.cn/">
                  <img src="{{ url_for('static',filename='image/04.jpg') }}">
              </a>
              <div class="desc"><a href="http://www.gzcc.cn/html/xiaoyoufengcai/">校友风采</a></div>
          </div>
      
      </div>
      {% block main %}
      {% endblock %}
      <div class="footer" >
          版权所有:wk
      </div>
      </body>
      </html>

posted @ 2017-11-24 11:40  091王卡  阅读(171)  评论(0)    收藏  举报