完成登录功能,用session记住用户名
登录功能完成:
- js:设置return
- html:设置
- form
- input
-
onclick="return fnLogin()"
- py:
- @app.route设置methods
- GET
- POST
- 读取表单数据
- 查询数据库
- 用户名密码对:
- 记住用户名
- 跳转到首页
- 用户名密码不对:
- 提示相应错误。
- 用户名密码对:
session:
- 从`flask`中导入`session`
- 设置`SECRET_KEY`
- 操作字典一样操作`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)
浙公网安备 33010602011771号