登录之后更新导航

  • 用上下文处理器app_context_processor定义函数
    1. 获取session中保存的值
    2. 返回字典
  • 在父模板中更新导航,插入登录状态判断代码。
    1. 注意用{% ... %}表示指令。
    2. {{ }}表示变量
  • 完成注销功能。
    1. 清除session
    2. 跳转
  • function fnLogin(){
                var uName = document.getElementById("uname");
                var uPass = document.getElementById("upass");
                var uError = document.getElementById("error_box");
                var isError=true;
    
                uError.innerHTML="<br>"
                //用户名
                if(uName.value.length<6|| uName.value.length>12) {
                    uError.innerHTML = "用户名需在6-12位中间";
                    isError=false;
                    return isError;
                }
               else if ((uName.value.charCodeAt(0)>=48)&&(uName.value.charCodeAt(0)<=57)){
                    uError.innerHTML = "用户名开头不能为数字";
                    isError=false;
                    return isError;
                }
                else for(var i=0;i<uName.value.length;i++){
                    if((uName.value.charCodeAt(i)<48 || uName.value.charCodeAt(i)>57)&&(uName.value.charCodeAt(i)<97 ||uName.value.charCodeAt(i)>122)){
                        uError.innerHTML = "用户名只能为数字或字母";
                        isError=false;
                        return isError;
                    }
                    }
                //密码
                if(uPass.value.length>12||uPass.value.length<6){
                    uError.innerHTML="密码需在6-12位中间";
                    return;
                }
                window.alert("登录成功!")
            }
    {% extends'index.html' %}
    {% block head %}
        <link rel="stylesheet" href="{{ url_for('static',filename='css/logsign.css')}}" type="text/css">
        <script src="{{ url_for('static',filename='js/login.js') }}"></script>
    {% endblock %}
    {% block main %}
    <body>
    <div class="pen-title">
      <h1>登 录</h1>
    </div>
    <div class="from">
        <h2>请登录您的账号</h2>
         <form class="form" method="post" action="{{ url_for('signin') }}">
            <div class="input_box">
               <input id="uname" type="text" placeholder="请输入用户名" name="username">
            </div>
            <br>
            <div class="input_box">
                <input id="upass" type="password" placeholder="请输入密码" name="password">
            </div>
            <div id="error_box"><br></div>
            <div class="login_box">
                <button onclick="fnLogin()">登录</button>
            </div>
         </form>
    </div>
    {% endblock </body>
    </html>%}
    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 daohang():
    
        return render_template('daohang.html')
    
     
    
     
    
    @app.route('/login/', methods=['GET', 'POST'])
    
    def login():
    
        if request.method == 'GET':
    
            return render_template('login.html')
    
        else:
    
            username = request.form.get('username')
    
            password = request.form.get('password')
    
            # nickname=request.form.get('nickname')
    
            user = User.query.filter(User.username == username).first()
    
            if user:
    
                session['user']=username
    
                session.permanent=True
    
                return redirect(url_for('daohang'))
    
            else:
    
                return 'error username or password'
    
            # if user:
    
            #     return 'username existed'
    
            # else:
    
            #     user=User(username=username,password=password)
    
            #     db.session.add(user)
    
            #     db.session.commit()
    
            return redirect(url_for('daohang'))
    
     
    
    @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('regist'))
    
     
    
    @app.route('/regist/', methods=['GET', 'POST'])
    
    def regist():
    
        if request.method == 'GET':
    
            return render_template('regist.html')
    
        else:
    
            username = request.form.get('username')
    
            password = request.form.get('password')
    
            # nickname=request.form.get('nickname')
    
            user = User.query.filter(User.username == username).first()
    
            if user:
    
                return 'username existed'
    
            else:
    
                user = User(username=username, password=password)
    
                db.session.add(user)
    
                db.session.commit()
    
                return redirect(url_for('login'))
    
     
    
     
    
    @app.route('/biaoqian/')
    
    def biaoqian():
    
        return render_template('biaoqian.html')
    
     
    
     
    
    if __name__ == '__main__':
    
        app.run(debug=True)

     

posted @ 2017-11-24 11:31  066谢平坚  阅读(99)  评论(0)    收藏  举报