zoukankan      html  css  js  c++  java
  • 完成登录功能,用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

    PY文件:

    from flask import Flask, render_template, request, url_for, sessions, redirect
    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='mis777789',password='g6666')
    # db.session.add(user)
    # db.session.commit()
    
    # 数据的修改方法
    # user = User.query.filter(User.username=='mis777789').first
    # user.password='0.0.0.0'
    # db.session.commit()
    
    # 数据的删除方法
    # user = User.query.filter(User.username=='mis777789').first()
    # db.session.delete(user)
    # db.session.commit()
    
    @app.route('/')
    def index():
        return render_template("index.html")
    
    @app.route('/login',methods=['GET','POST'])
    def login():
        if request.method == 'GET':
            return render_template('login.html')
        else:
            username = request.form.get('id')  # 与html页面名字相同
            password = request.form.get('password')
            user = User.query.filter(User.username == username,User.password==password).first()
            if user:
                sessions['username']=username
                sessions.permanent=True
                return redirect(url_for('index'))
            else:
                return '用户不存在'
    
    
    @app.route('/regis',methods=['GET','POST'])
    def register():
        if request.method=='GET':
    
            return render_template('Zhuce.html')
        else:
    
            username=request.form.get('zcid')#与html页面名字相同
            password=request.form.get('zcpassword')
            user=User.query.filter(User.username==username).first()
            if user:
                return 'exit'
            else:
                user=User(username=username,password=password)
                db.session.add(user)
                db.session.commit()
                return redirect(url_for('login'))
    
    
    
    @app.route('/fankui')
    def fankui():
        return render_template("page_fankui.html")
    
    if __name__ == '__main__':
        app.run(debug=True)

    js文件:

    function Login(){
                var un=document.getElementById("id");
                var us=document.getElementById("password");
                var er=document.getElementById("error_box");
                er.innerHTML = "<br>";
                if(un.value.length<6||un.value.length>20){
                er.innerHTML="用户名必须在6-20个字符之间";
                return false;
                }else if((un.value.charCodeAt(0))>=48 && un.value.charCodeAt(0)<=57){
                    er.innerHTML = "首字母不能为数字"
                    return false;
                }else for(var i=0;i<un.value.length;i++){
                    if((un.value.charCodeAt(i)<48)||(un.value.charCodeAt(i)>57)&&(un.value.charCodeAt(i)<97)&&(un.value.charCodeAt(i)>122)){
                        er.innerHTML="用户名只能为数字和字母"
                        return false;
                    }
                }
                if(us.value.length<6||us.value.length>20){
                er.innerHTML="密码必须在6-20个字符之间";
                return false;
                }
                return true;
            }
        function Zhuce() {
            var un=document.getElementById("zcid");
            var us=document.getElementById("zcpassword");
            var rpa=document.getElementById("repassword");
            var er=document.getElementById("error_box1");
                er.innerHTML = "<br>";
                if(un.value.length<6||un.value.length>20){
                er.innerHTML="用户名必须在6-20个字符之间";
                return false;
                }else if((un.value.charCodeAt(0))>=48 && un.value.charCodeAt(0)<=57){
                    er.innerHTML = "首字母不能为数字"
                    return false;
                }else for(var i=0;i<un.value.length;i++){
                    if((un.value.charCodeAt(i)<48)||(un.value.charCodeAt(i)>57)&&(un.value.charCodeAt(i)<97)&&(un.value.charCodeAt(i)>122)){
                        er.innerHTML="用户名只能为数字和字母"
                        return false;
                    }
                }
                if(us.value.length<6||us.value.length>20){
                     er.innerHTML="密码必须在6-20个字符之间";
                     return false;
                }else for(var i=0;i<us.value.length;i++){
                    if(us.value.charCodeAt(i)!=rpa.value.charCodeAt(i)){
                        er.innerHTML="密码不一致"
                        return false
                    }
                }
                return true;
        }

    html:

    {% extends "base.html" %}
    
    {% block title %}登陆{% endblock %}
    
    {% block head %}
    <link href="{{ url_for("static",filename="CSS/login_zhuce.css") }}" rel="stylesheet" type="text/css" charset="UTF-8">
    <script src="{{ url_for("static",filename="JS/login_zhuce.js") }}"></script>
    {% endblock %}
    
    {% block main %}
    <div class="center-block" id="loginbox">
        <div class="panel panel-primary" id="loginbox1_1">
            <div class="panel-heading">
                <h2 class="panel-title">登陆</h2>
            </div>
            <br>
            <form class="bs-example bs-example-form" role="form" action="{{ url_for('login') }}" method="post">
                <div class="input-group">
                    <span class="input-group-addon"></span>
                    <input type="text" class="form-control" id="id" placeholder="请输入用户名" name="id">
                </div>
                <br>
                <div class="input-group">
                    <span class="input-group-addon"></span>
                    <input type="password" class="form-control" id="password" placeholder="请输入密码" name="password">
                </div>
                <div id="error_box">
                    <br>
                </div>
                <div class="checkbox">
                    <label>
                        <input type="checkbox">记住我
                    </label>
                </div>
                <br>
                <label><input type="submit" class="btn btn-default" onclick="Login()" value="登陆"></input></label>
    
            </form>
        </div>
    </div>
    {% endblock %}
    
    
    </html>
  • 相关阅读:
    身份证的测试用例
    集合
    网易考拉测试面试题整理
    linux基本指令分类
    网络编程
    设计模式
    MySQL中的索引
    MySQL中的事务
    Java判断字符串是否为乱码
    Activiti6.x删除外键
  • 原文地址:https://www.cnblogs.com/Naiky/p/7881308.html
Copyright © 2011-2022 走看看