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

    session:

    1. 从`flask`中导入`session`
    2. 设置`SECRET_KEY`
    3. 操作字典一样操作`session`:增加用户名`session['username']=`username

    config.py:

    import os
    
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@127.0.0.1:3306/dianying?charset=utf8'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    SECRET_KEY = os.urandom(24)

    主py文件:

    from flask import Flask,request,render_template,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=TabError,autoincrement=True)
        username = db.Column(db.String(20),nullable=False)
        password = db.Column(db.String(20), nullable=False)
    
    #db.create_all()
    
    # #增加
    # user = User(username='123456',password = '456789')
    # db.session.add(user)
    # db.session.commit()
    #
    # #查询
    # user =User.query.filter(User.username =='abcdef').first()
    # print(user.username,user.password)
    #
    # #修改
    # user =User.query.filter(User.username =='123456').first()
    # user.password='abcdef'
    # print(user.username,user.password)
    # db.session.commit()
    #
    # #删除
    # user =User.query.filter(User.username =='123456').first()
    # print(user.username,user.password)
    # db.session.delete(user)
    # db.session.commit()
    
    @app.route('/')
    def dh():
        return render_template('dh.html')
    
    @app.route('/sy/')
    def sy():
        return render_template('sy.html')
    
    
    @app.route('/dl/',methods=['GET','POST'])
    def dl():
        if request.method == 'GET':
            return render_template("dl.html")
        else:
            usern = request.form.get('name')
            password = request.form.get('password')
            user = User.query.filter(User.username == usern).first()
            if user:
                if user.password == password:
                    session['user'] = usern
                    return redirect(url_for('sy'))
                else:
                    return '密码错误(〃>皿<)'
            else:
                return '用户不存在┌(。Д。)┐'
    
    @app.route('/zc/',methods=['GET','POST'])
    def zc():
        if request.method == 'GET':
            return render_template("zc.html")
        else:
            usern = request.form.get('name')
            password = request.form.get('password')
            user = User.query.filter(User.username == usern).first()
            if user:
                return '用户名已存在┗|*`0′*|┛ '
            else:
                user1 = User(username=usern, password=password)
                db.session.add(user1)
                db.session.commit()
                return redirect(url_for('dl'))
    
    
    @app.route('/fk/')
    def fk():
        return render_template('fk.html')
    
    if __name__ == '__main__':
        app.run(debug=True)

    登录HTML:

    {% extends 'dh.html' %}
    {% block title %}
    登录
    {% endblock %}
    {% block main %}
        <link rel="stylesheet" type="text/css" href="../static/css/dl.css">
        <script src="../static/js/dl.js"></script>
    </head>
    <body>
    
    <div class="box" >
        <form action="{{url_for('dl')}}" method="post">
        <div class="container" style=" 400px"align="center">
        <div class="dl" style="background-color:#c8a4fa;400px"><h2 align="center" style="margin-bottom: 0;400px">✉登  录✉</h2></div>
        <div class="content" style="background-color:lightpink;height:205px;400px;float:left;">
        <div class="xx" align="center">
            <p> </p>
            账  户:<input id="name" type="text"placeholder="请输入用户名" name="name"><br>
            密  码:<input id="password" type="password"placeholder="请输入密码" name="password">
            <p> </p>
            </div>
            <div id="error_box"><br></div>
            <p>  </p>
          <div class="an" >
             <button onclick="myLogin()">登录</button>
             <button type="button" onclick=window.alert("是否取消登录!")>取消</button>
    
             </div>
    
        </div>
         </div>
        </form>
    </div>
    </body>
    </html>
    
    {% endblock %}

  • 相关阅读:
    Windows 2003上配置Autodesk授权管理器ADLM (Autodesk License Manager)
    Autodesk 2010年GIS培训意愿调查正在进行…
    MapGuide应用开发系列(四) 如何运行第一个.net实例代码
    MapGuide应用开发系列(三)MapGuide 数据包管理及Maestro亮点功能介绍
    c语言动态指针"数组"一种伪二维数组
    c语言链表实现一元多项式的加减乘运算
    (转)D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
    (转)DirectX图象中设备支持的原基类型D3D入门
    通过动态内存分配来实现类似于动态数组的功能
    DirectX9.0教程之ID3DXSprite篇[转载]
  • 原文地址:https://www.cnblogs.com/qisq/p/7879767.html
Copyright © 2011-2022 走看看