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
    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=TabError, autoincrement=True)
        username = db.Column(db.String(20), nullable=False)
        password = db.Column(db.String(20), nullable=False)
        # nickname = db.Column(db.String(20))
    
    
    # 查询删除
    # user = User.query.filter(User.username == 'lin').first()
    # db.session.delete(user)
    # db.session.commit()
    
    # 修改
    # user = User.query.filter(User.username == 'lin').first()
    # user.password = '1234'
    # print(user.username,user.password)
    # db.session.commit()
    
    # 增加
    # user = User(username = 'lin',password = 'lin')
    # db.session.add(user)
    # db.session.commit()
    
    db.create_all()
    
    
    @app.route('/')
    def jianshu():
        return render_template('jianshu.html')
    
    
    @app.route("/login/", methods=['GET', 'POST'])
    def login():
        if request.method == 'GET':
            return render_template('login.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
            user = User.query.filter(User.username == username).first()
            if user:
                session['user'] = username
                session.permanent = True
                return redirect(url_for('jianshu'))
            else:
                return 'error username or password'
    
    
    @app.route("/enroll/", methods=['GET', 'POST'])
    def enroll():
        if request.method == 'GET':
            return render_template('enroll.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
            user = User.query.filter(User.username == username).first()
            if user:
                return 'username exited'
            else:
                user = User(username=username, password=password)
                db.session.add(user)
                db.session.commit()
                return redirect(url_for('login'))
    
    
    @app.route("/post/")
    def post():
        return render_template('post.html')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

  • 相关阅读:
    使用VS2013直接升级到VS2019,Cmake编译CCC4.0版本错误记录
    最近使用LuaSqlite3时,不得不说的——事务提交ATTACH语句的巨坑
    LuaSocket学习之tcp服务端
    LuaSocket HTTP 初识记录
    LuaRocks安装教程
    Lua5.1-----函数可变参数详解
    DataTable与json互转,字段类型信息丢失问题初探
    json数组与对象数组
    asp.net中封装路由信息的对象--RouteData源码
    人类的心理行为模式(几个心理学实验)
  • 原文地址:https://www.cnblogs.com/lintingting/p/7872570.html
Copyright © 2011-2022 走看看