• flask CBV flask-session


    flask  CBV

    from flask import Flask, views, render_template, request
    
    app = Flask(__name__,template_folder='template')
    USER = {"username": "aaa", "password": "111"}
    
    
    class Login(views.MethodView):    #注意导入的类   MethodView
      #methods=["GET","POST"] 可有可无 def
    get(self): return render_template("login.html") def post(self): username = request.form.get("username") password = request.form.get("password") if username == USER["username"] and password == USER["password"]: return "登录成功" else: return render_template("login.html", error="用户名或者密码错误") app.add_url_rule("/login", view_func=Login.as_view(name="login")) #也可加上 endpoint=None if __name__ == '__main__': app.run("127.0.0.1", 5000)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="" method="post">
        {{ error }}
        <br>
        用 户:<input type="text" name="username">
        <br>
        密  码:<input type="password" name="password">
        <br>
        <input type="submit" value="登录">
    
    </form>
    
    </body>
    </html>

    flask-session  综合测试

    manage.py 

    注意 python 中安装flask-session 模块   

      Windows中 安装redis 数据库     启动数据库 连接数据库

      

      

    from flask import Flask, request, session, redirect
    
    from redis import Redis
    from flask_session import Session
    
    from day89.server import login
    from day89.server import students
    from day89.server import detail
    from day89 import settings
    
    app = Flask(__name__)
    
    # 指定session 存储的数据库类型
    app.config["SESSION_TYPE"] = "redis"
    # 配置数据库实例
    app.config["SESSION_REDIS"] = Redis(host="127.0.0.1", port=6379, db=6)
    # 读取config配置 改写APP
    Session(app)
    
    # 加密钥
    # app.secret_key = "xxx"
    
    
    app.config.from_object(settings.Debugsetting)
    # app.config.from_object(settings.Testingsetting)
    
    
    # 在进入视图函数之前进行验证
    @app.before_request
    def is_login():
        if request.path == "/login":
            return None
        if not session.get("user"):
            return redirect("/login")
    
    
    # 注册
    app.register_blueprint(login.login)
    app.register_blueprint(students.students)
    app.register_blueprint(detail.detail)
    
    
    # 错误界面
    @app.errorhandler(404)
    def error404(error_message):
        return "这个界面真没有!!!"
    
    
    if __name__ == '__main__':
        app.run()

    setting.py

    class Debugsetting(object):
        DEBUG=True
        SESSION_COOKIE_NAME="I am debug session"
    
    
    class Testingsetting(object):
        TESTING=True
        SESSION_COOKIE_NAME="I am testing session"

    login.py

    from flask import Blueprint, request, render_template, redirect, session,views
    login = Blueprint("login", __name__)
    
    USER = {"username": "aaa", "password": "111"}
    
    # r = redis.StrictRedis(host='127.0.0.1', port=6379, db=6)
    class Login(views.MethodView):
        def get(self):
            return render_template("login.html")
    
        def post(self):
            username = request.form.get("username")
            password = request.form.get("password")
            if username == USER["username"] and password == USER["password"]:
    
                session["user"]=username
    
                return redirect("/students")
            else:
                return render_template("login.html", error="用户名或者密码错误")
    
    
    login.add_url_rule("/login",view_func=Login.as_view(name="login"))
    
    
    
    
    # from flask import Blueprint, request, render_template, redirect, session
    # login = Blueprint("login", __name__)
    #
    # USER = {"username": "aaa", "password": "111"}
    # @login.route("/login", methods=["GET", "POST"])
    # def login1():
    #     if request.method == "GET":
    #         return render_template("login.html")
    #     else:
    #         username = request.form.get("username")
    #         password = request.form.get("password")
    #         if username == USER["username"] and password == USER["password"]:
    #             session["user"] = username
    #             return redirect("/students")
    #         else:
    #             return render_template("login.html", error="用户名或者密码错误")
    from flask import Blueprint, render_template, views
    
    STUDENT_DICT = {
        1: {'name': 'Old', 'age': 38, 'gender': ''},
        2: {'name': 'Boy', 'age': 73, 'gender': ''},
        3: {'name': 'EDU', 'age': 84, 'gender': ''},
    }
    
    students = Blueprint("students", __name__, )
    
    
    class Students(views.MethodView):
        def get(self):
            return render_template("students.html", studentdict=STUDENT_DICT)
    
    
    students.add_url_rule("/students", view_func=Students.as_view(name="students"))
    
    #
    # from flask import Blueprint, render_template
    #
    # STUDENT_DICT = {
    #     1: {'name': 'Old', 'age': 38, 'gender': ''},
    #     2: {'name': 'Boy', 'age': 73, 'gender': ''},
    #     3: {'name': 'EDU', 'age': 84, 'gender': ''},
    # }
    #
    # students = Blueprint("students", __name__,)
    #
    #
    # @students.route("/students")
    # def students1():
    #     return render_template("students.html", studentdict=STUDENT_DICT)
    View Code
    from flask import Blueprint, request, render_template, views
    
    detail = Blueprint("detail", __name__, )
    
    STUDENT_DICT = {
        1: {'name': 'Old', 'age': 38, 'gender': ''},
        2: {'name': 'Boy', 'age': 73, 'gender': ''},
        3: {'name': 'EDU', 'age': 84, 'gender': ''},
    }
    
    
    class Detail(views.MethodView):
        def get(self):
            id = request.args.get("id")
            studentdetail = STUDENT_DICT.get(int(id))
            return render_template("detail.html", id=id, studentdetail=studentdetail)
    
    
    detail.add_url_rule("/detail", view_func=Detail.as_view(name="detail"))
    
    # from flask import Blueprint, request, render_template
    #
    # detail = Blueprint("detail", __name__,
    #                   )
    #
    # STUDENT_DICT = {
    #     1: {'name': 'Old', 'age': 38, 'gender': ''},
    #     2: {'name': 'Boy', 'age': 73, 'gender': ''},
    #     3: {'name': 'EDU', 'age': 84, 'gender': ''},
    # }
    #
    #
    # @detail.route("/detail")
    # def detail1():
    #     id = request.args.get("id")
    #     studentdetail = STUDENT_DICT.get(int(id))
    #     return render_template("detail.html", id=id, studentdetail=studentdetail)
    View Code

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>login</title>
    </head>
    <body>
    
    <form action="" method="post">
        {{ error }}
        <br>
        用户名:<input type="text" name="username">
        <br>
        密码:<input type="password" name="password">
        <br>
        <input type="submit" value="登录">
    
    </form>
    
    
    </body>
    </html>
    View Code
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    {{ studentdict }}
    
    <table border="1px">
        <thead>
        <tr>
            <th>id</th>
            <th>name</th>
            <th>detail</th>
        </tr>
        </thead>
        <tbody>
        {% for id,student in studentdict.items() %}
            <tr>
                <td>{{ id }}</td>
                <td>{{ student.name }}</td>
                <td><a href="/detail?id={{ id }}">detail</a></td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
    
    
    </body>
    </html>
    View Code
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {{ id }}
    {{ studentdetail }}
    
    <table border="1px">
        <thead>
        <tr>
            <th>id</th>
            <th>name</th>
            <th>age</th>
            <th>gender</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>{{ id }}</td>
            <td>{{ studentdetail.name }}</td>
            <td>{{ studentdetail.age }}</td>
            <td>{% if studentdetail.gender !="" and studentdetail.gender !="" %}
                女
            {% else %}
                {{ studentdetail.gender }}
            {% endif %}
            </td>
        </tr>
        </tbody>
    </table>
    <br>
    <button><a href="/students">返回</a></button>
    
    </body>
    </html>
    View Code
  • 相关阅读:
    Thread--使用condition实现顺序执行
    Thread--condition
    Thread--lock,lockInterruptibly,tryLock,tryLock(long timeout, TimeUnit unit)
    Thread--线程间通信--管道
    Thread--生产者消费者假死分析
    Thread--生产者消费者
    Java--定时
    Thread--两线程交替打印
    重装系统都杀不掉的十大病毒
    常用工具
  • 原文地址:https://www.cnblogs.com/XLHIT/p/11178660.html
Copyright © 2020-2023  润新知