完成登录功能,用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

 

js文件

function foLogin() {
            var oUname = document.getElementById("uname");
            var oError = document.getElementById("error_box");
            var oUpass = document.getElementById("upass");

            var isError = true;
            oError.innerHTML = "<br>";

            if (oUname.value.length < 6 || oUname.value.length > 12) {
                oError.innerHTML = "用户名要6-12位";
                isError = false;
                return;
            }else if(oUname.value.charCodeAt(0)>=48 &&(oUname.value.charCodeAt(0)<=57)){
                oError.innerHTML="首位不能为数字";
                isError = false;
                return isError;

            }else for (var i=0;i<oUname.value.length;i++){
               if((oUname.value.charCodeAt(i)<48)||(oUname.value.charCodeAt(i)>57)&&(oUname.value.charCodeAt(i)<58)&&(oUname.value.charCodeAt(i)>97)){
                oError.innerHTML="只能为数字和字母";
                isError = false;
                return isError;
            }
            }
            if (oUpass.value.length < 6 || oUpass.value.length > 12) {
                oError.innerHTML = "密码要6-20位";
                isError = false;
                isError = false;
                return isError;
             }
            return true;
            }

html

 py

from flask import Flask,request,render_template,redirect,url_for,session
from flask_sqlalchemy import SQLAlchemy
import sqlconnect


app = Flask(__name__)
app.config.from_object(sqlconnect)
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ ='user1'
    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)
    #againpass = db.Column(db.String(20), nullable=False)


#db.create_all()


@app.route('/')
def base():
    return render_template("base.html")

@app.route("/login",methods=['GET','POST'])
def sign_in():
    if request.method =='GET':
        return render_template("sign_in.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('base'))
            else:
                return u'密码错误!'
        else:
            return u'不存在该用户名!'


@app.route("/regiter",methods=['GET','POST'])
def sign_up():
    if request.method == 'GET':
        return render_template("sign_up.html")
    else:
        name = request.form.get('newname')
        passw = request.form.get('newpass')
        samename = User.query.filter(User.username == name).first()
        if samename:
            return u'username existed!'

        else:
         
            users =User(username = name ,password = passw)
            db.session.add(users)
            db.session.commit()
            return render_template("sign_in.html")




if __name__ == '__main__':
    app.run(debug=True)

 

posted on 2017-11-23 19:36  lishanting  阅读(537)  评论(0)    收藏  举报