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

登录功能完成:

  1. js:设置return
  2. html:设置
    1. form
    2. input
    3. οnclick="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']=`userna
    function fnLogin() {
        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 isError;
        } 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) < 97) || (oUname.value.charCodeAt(i) > 122)) {
                oError.innerHTML = "用户名只能是字母与数字";
                isNotError=false;
                return isError;
            }
        }
        if ((oUpass.value.length < 6) || (oUpass.value.length > 20)) {
            oError.innerHTML = "密码为6到20位";
            return
        }
        return true;
        //window.alert("登录成功!!")
    }
    <form action="{{url_for('login')}}" method="post">
               <div class="inputStyle">
                <input class="inputFramework" type="text" id="uname" name="username" placeholder="请输入用户名">
               </div>
    
               <div class="inputStyle">
                <input class="inputFramework" type="password" id="upassword" name="userpassword" placeholder="请输入密码">
               </div>
    
               <div class="checkBox">
                <label class="caption"><input class="loginCheckBox" type="radio" name="role" value="stu">学生</label>
                <label class="caption"><input class="loginCheckBox" type="radio" name="role" value="tea">教师</label>
                   <br>
               </div>
    
               <div>
                    <br>
                   <label><input id="loginButton" type="button" value="登录" onclick="fnLogin();"/></label>
               </div>
    
               <div class="errorBox" id="errorName">
               </div>
    
               <div class="errorBox" id="errorPassWord">
               </div>
         </form>
    @app.route('/login')
    def login():
        if request.method == 'GET':
            return render_template('login.html')
        else:
            username = request.form.get('username')
            password = request.form.get('userpassword')
            user = User.query.filter(User.username == username, User.password == password).first()
            if user:
                session['user']=username
                session.permanent = True;
                return redirect(url_for('index'))
            else:
                return 'username or password error'

     

转载于:https://www.cnblogs.com/linf/p/7886587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值