完成登录功能,用session记住用户名

 

登录功能完成:

  1. js:设置return
  2. html:设置
    1. form
    2. input
    3. onclick="return fnLogin()"
  3. py:
    1. @app.route设置methods
    2. GET
    3. POST
      1. 读取表单数据
      2. 查询数据库
        1. 用户名密码对:
          1. 记住用户名
          2. 跳转到首页
        2. 用户名密码不对:
          1. 提示相应错误。

session:

  1. 从`flask`中导入`session`
  2. 设置`SECRET_KEY`
  3. 操作字典一样操作`session`:增加用户名`session['username']=`username
  4. from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    import config
    from flask import Flask,render_template,request,redirect, url_for,session
    
    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(20))
    
    db.create_all()
    
    @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:
            usern = request.form.get('username')
            passw = request.form.get('password')
            user = User.query.filter(User.username == usern).first()
            if user:
                if user.password==passw:
                    session['user'] = usern
                    session.permanent = True
                    return redirect(url_for('base'))
                else:
                    return u'password error'
            else:
                return u'password is not existed'
    
    @app.route('/rege/',methods=['GET','POST'])
    def rege():
        if request.method =='GET':
            return render_template('rege.html')
        else:
            usern = request.form.get('username')
            nickn =request.form.get('nickname')
            passw = request.form.get('password')
            user = User.query,filter(User.username ==usern).first()
            if user:
                return 'username.existed'
            else:
                user1 = User(username=usern,password=passw,niciname = nickn)
                db.session.add(user1)
                db.session.commit()
    
    @app.route('/question/')
    def question():
        return render_template('question.html')
    
    
    if __name__=="__main__":
        app.run(debug=True)
    {% extends 'basic.html' %}
    {% block title %}登陆{% endblock %}
    
    {% block head %}
        <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='../staticcss/20.css') }}">
        <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='../staticcss/200.css') }}">
        <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='../static/css/2000.css') }}">
        <script src="{{url_for('static',filename='../static/js/39.js') }}" type="text/css"></script>
    {% endblock %}
    
    {% block login %}
    </head>
    <body class="abc">
    <h1 align="center" class="ads">Welcome to gzcc</h1>
    
    <h4 align="center"class="ads"> Management system</h4>
    <div style="margin:0" align="center">
    <div  id="container" style="width:400px " >
        <div class="touming" id="header" style="background-color: aqua;color: darkcyan;"><h2 align="center" style="margin-bottom:0;">LOG IN TO GZCC</h2></div>
    
    <form align="center" >
        username:<input id="uname" type="text"name="username"placeholder="username"><br>
        password:<input id="upass" type="password"name="password" placeholder="password"><br>
        <a href="https://image.baidu.com/">Forgot Password?</a>
        <div id="error_box"> <br></div>
        <input class="body"  type="button" onclick="return myLogin()" value="Log In"style="width: 250px;height: 50px;background-color: aqua;">
    <div id="content" style=";height:150px;width:400px;float:left;"></div>
        <div class="touming" id="footer" style="background-color:aqua;clear:both;text-align:center;color: darkcyan;">版权 © djc</div>
    </form>
    </div>
    </div>
    </body> </html>{% endblock %}
    function myLogin() {
                var oUname=document.getElementById("uname");
                var oUpass=document.getElementById("upass");
                var oError=document.getElementById("error_box");
                oError.innerHTML="<br>";
                if (oUname.value.length<6||oUname.value.length>20){
                    oError.innerHTML="用户名需要大于6或者用户名需要小于20.";
                    return false;
                }else if ((oUname.value.charCodeAt(0)>=48)&&(oUname.value.charCodeAt(0)<=57)){
                    oError.innerHTML="用户名首字母不能为数字";
                    return false;
                }else for(var i=0;i<oUname.value.lengtt;i++){
                    if((oUname.value.charCodeAt(i)<48||oUname.value.charCodeAt(i)>57)&&(oUname.value.charCodeAt(i)<97||oUname.value.charCodeAt(i)>122)){
                    oError.innerHTML="用户名只能由数字和字母组合"}
                    return false;
                }
                if (oUpass.value.length<6||oUpass.value.length>20 ){
                    oError.innerHTML="密码需要大于6或者密码需要小于20.";
                    return false;
                }
                window.alert("LINK START!")
            }

     

     

       

     

     

posted @ 2017-11-23 20:07  067杜嘉成  阅读(112)  评论(0编辑  收藏  举报