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

登录功能完成:

  1. js:设置return
  2. html:设置
    1. form
    2. input
  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
function fnLogin() {
var oUname = document.getElementById("umane");
var oError = document.getElementById("error_box");
var oUpass = document.getElementById("upass")
var isoError = true;
    oError.innerHTML="<br>"

if(oUname.value.length<6 || oUname.value.length>20){
    oError.innerHTML="用户名为6-20位";
    isoError = false;
    return isoError;
} else if((oUname.value.charCodeAt(0)>=48) && (oUname.value.charCodeAt(0)<=57)){
    oError.innerHTML="首字母不能是数字";
    isoError = false;
    return isoError;
}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)<97) || (oUname.value.charCodeAt(i)>122))){
        oError.innerHTML="只能是数字或字母";
       isoError = false;
       return isoError;
    }
}
if(oUpass.value.length<6 || oUpass.value.length>20){
   oError.innerHTML="密码为6-20位";
   isoError = false;
   return isoError;
 }
 window.alert("登录成功!")
}
{% extends 'base.html' %}
    {% block logintitle %}登录{% endblock %}
    {% block loginhead %}
    <script src="../static/js/login.js"></script>
    {% endblock %}
{% block loginbody %}
<div class="bigbox">
<div class="box">
<h1>登录</h1>
<form action="{{ url_for('login') }}" method="post">
<div class="input_box">
账户:<input id="umane"type="text"placeholder="请输入用户名"name="username">
</div>
<div class="input_box">
密码:<input id="upass"type="password"placeholder="请输入密码"name="password">
</div>
<div id="error_box"><br></div>
<div class="input_box">
<button onclick="fnLogin()">登录</button>
<button onclick=window.alert("是否取消登录?")>取消</button></div>
    </form>
</div>
</div>

{% endblock %}
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()

#数据的添加方法
#user=User(username='kobe24',password='666666')
#db.session.add(user)
#db.session.commit()

#数据的查询方法
#user=User.query.filter(User.username =='kobe24').first()
#print(user.username,user.password)

# 数据的修改方法
#user = User.query.filter(User.username=='kobe24').first
#user.password='123456'
#db.session.commit()

# 数据的删除方法
#user = User.query.filter(User.username=='kobe24').first()
#db.session.delete(user)
#db.session.commit()

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

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        username = request.form.get('username')  # 获取form中的数据
        password = request.form.get('password')
        user = User.query.filter(User.username == username).first()
        if user:
            if user.password == password:
                session['user'] = username
                session.permanent = True
                return redirect(url_for('base'))  # 返回到首页
        else:
            return u'error username or password'  # 输出错误

@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')
        user = User.query.filter(User.username == username).first()
        # 判断用户名是否存在
        if user:
            return u'username existed'
        else:
            user = User(username=username, password=password)
            db.session.add(user)
            db.session.commit()
            return redirect(url_for('login'))

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

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

 

posted @ 2017-11-22 20:57  004熊锋阳  阅读(180)  评论(0编辑  收藏  举报