登录之后更新导航

  1.  用上下文处理器app_context_processor定义函数
    1. 获取session中保存的值
    2. 返回字典
  2. 在父模板中更新导航,插入登录状态判断代码。
    1. 注意用{% ... %}表示指令。
    2. {{ }}表示变量
  3. 完成注销功能。
    1. 清除session
    2. 跳转
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
         <title>{% block title %}{% endblock %}base</title>
          <link rel="stylesheet" type="text/css" href="../static/css/shouye.css" type="text/css">
           <script src="../static/js/shouye.js"></script>
          <manhua target="_blank"/>
      </head>
       {% block head %}{% endblock %}
      <body id="myBody">
      
      <nav>
          <img src="http://news.u17i.com/images/header_bg/header_bg_1508753122_9zUfjgQKJw7A.jpg"><br>
          <a href="http://127.0.0.1:5000/manhua">首页</a>
          <a href="">下载</a>
          <input type="text"name="search">
          <button type="submit">搜索</button>
      
          {%  if name %}
              <a href="#"><h2>{{ name }}</h2></a>
              <a href="{{ url_for('logout') }}"><h2>注销</h2></a>
          {% else %}
               <a href="{{ url_for('login') }}"><h2>登陆</h2></a>
               <a href="{{ url_for('register') }}"><h2>注册</h2></a>
           {% endif %}
      
        <img id="on_off" onclick="mySwitch()" src="../static/images/on.jpg" width="80px">
          </nav>
      {% block main %}
      {% endblock %}
      
      </body>
      </html>
      from flask import Flask,request,render_template,redirect,url_for,session
      from flask_sqlalchemy import SQLAlchemy
      import config
      from functools import wraps
      from  datetime import datetime
      
      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)
          nickname = db.Column(db.String(50))
      
      
      #db.create_all()
      
      #增加数据
      #user=User(username = 'shanshan1',password = '111111')
      #db.session.add(user)
      #db.session.commit()
      
      #查询数据
      #user=User.query.filter(user.username == 'shanshan1').first()
      #print(user.id,user.username,user.password)
      
      
      #修改数据
      #user=User.query.filter(user.username == 'shanshan3').first()
      #user.password = '0000'
      #db.session.commit()
      
      #删除数据
      #user=User.query.filter(user.username == 'shanshan3').first()
      #db.session.delete(user)
      #db.session.commit()
      
      
      @app.route('/')
      def index():
          return  render_template('shouye.html')
      @app.route(   '/manhua')
      def manhua():
          return  render_template('manhua.html')
      
      @app.route('/login',methods=['GET','POST'])
      def login():
          if request.method =='GET':
              return render_template('denglu.html')
          else:
              name = request.form.get('name')
              passw = request.form.get('password')
              user = User.query.filter(User.username == name).first()
          if user:
             if user.password==passw:
                 session['user']=name
                 return redirect(url_for('manhua'))
             else:
                 return "密码错误!"
          else:
              return "用户名不存在!"
      
      @app.context_processor
      def mycontext():
          usern=session.get('user')
          if usern:
              return {'name':usern}
          else:
              return {}
      
      @app.route('/logout')
      def logout():
          session.clear()
          return redirect(url_for('manhua'))
      
      @app.route("/register",methods=['GET','POST'])
      def register():
          if request.method == 'GET':
              return render_template("zhuce.html")
          else:
              name = request.form.get('name')
              passw = request.form.get('password')
              user = User.query.filter(User.username == name).first()
          if user:
              return "用户名已存在!"
      
          else:
              user = User(username=name, password=passw)
              db.session.add(user)
              db.session.commit()
              return render_template("denglu.html")
      
      
      
      if __name__ == '__main__':
          app.run(debug=True)

           

       

       

posted on 2017-11-24 11:43  104鲍珊珊  阅读(170)  评论(0编辑  收藏  举报

导航