完成登录功能,用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. 读取表单数据查询数据库
    1. 用户名密码对:
      1. 记住用户名
      2. 跳转到首页
      用户名密码不对:
      1. 提示相应错误。

session:

  1.从`flask`中导入`session`

  2.设置`SECRET_KEY`

  3.操作字典一样操作`session`:增加用户名`session['username']=`username

function fnLogin() {
        var oUname=document.getElementById("uname")
        var oUpass=document.getElementById("upass");
        var oError=document.getElementById("error_box")
        var isError=true;
        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="first.number."
            return false;
        }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 = "only letter or number.";
                return false;
            }
        }
        if(oUpass.value.length<6|| oUpass.value.length > 20){
            oError.innerHTML="密码至少6-20位"
            return false;
        }
        if((oUname.value.length < 6 || oUname.value.length > 20) && (oUpass.value.length < 6 || oUpass.value.length > 20)){
            oError.innerHTML="用户名密码至少6-20位"
              return false;
            }

            return true;
            window.alert("登录成功")
        }
{% extends 'base.html' %}
{% block title %}
登录
{% endblock %}
{% block head %}
   <link href="{{ url_for('static',filename='css/ll.css') }}" rel="stylesheet" type="text/css">
    <script src="{{ url_for('static',filename='js/ll.js')}}"></script>
{% endblock %}

{% block main %}
<body>
 <div class="box">
     <h2 class="d">登录</h2>
     <form action="{{url_for('ll')}}" method="post">
     <div class="input_box">
            <input style="background-color: deepskyblue;" id="uname" type="text" placeholder="请输入用户名" name="username">
        </div>
        <br>
        <div class="input_box">
            <input style="background-color: deepskyblue;" id="upass" type="password" placeholder="请输入密码" name="password">
        </div>
        <br>
        <div id="error_box"><br></div>
        <div class="input_box">
            <button class="dl" onclick="fnLogin()">enter</button>

        </div>
        <br>
    </div>
</div>
</body>
</html>
{% endblock %}

 

py文件

from flask import Flask,render_template,request,redirect,url_for,session
from flask_sqlalchemy import SQLAlchemy
import config
from functools import wraps
from datetime import datetime


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(50))

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

@app.route('/ll/',methods=['GET','POST'])
def ll():
    if request.method=='GET':
        return render_template('ll.html')
    else:
        username=request.form.get('username')
        password=request.form.get('password')
        user=User.query.filter(User.username==username,User.password==password).first()
        if user:
            session['user']=username
            session.permanent=True
            return redirect(url_for('base'))
        else:
            return u'error username or password'


@app.route('/zc/',methods=['GET','POST'])
def zc():
    if request.method=='GET':
         return render_template('zc.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('ll'))

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

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

 

posted on 2017-11-23 00:03  020吴惠琳  阅读(205)  评论(0)    收藏  举报