zoukankan      html  css  js  c++  java
  • 装饰器的应用

    from flask import Flask,render_template,request,redirect,session
    app = Flask(__name__)
    app.secret_key = "sdsfdsgdfgdfgfh"   # 设置session时,必须要加盐,否则报错
    
    def wrapper(func):
        def inner(*args,**kwargs):
            if not session.get("user_info"):
                return redirect("/login")
            ret = func(*args,**kwargs)
            return ret
        return inner
    
    @app.route("/login",methods=["GET","POST"])  # 指定该路由可接收的请求方式,默认为GET
    def login():
        if request.method=="GET":
            return render_template("login.html")
        else:
            # print(request.values)   #这个里面什么都有,相当于body
            username = request.form.get("username")
            password = request.form.get("password")
            if username=="haiyan" and password=="123":
                session["user_info"] = username
                # session.pop("user_info")  #删除session
                return redirect("/index")
            else:
                # return render_template("login.html",**{"msg":"用户名或密码错误"})
                return render_template("login.html",msg="用户名或者密码错误")
    
    @app.route("/index",methods=["GET","POST"])
    @wrapper    #自己定义装饰器时,必须放在路由的装饰器下面
    def index():
        # if not session.get("user_info"):
        #     return redirect("/login")
        return render_template("index.html")
    
    
    if __name__ == '__main__':
        app.run(debug=True) 
    
    
    
    debug = True 是指进入调试模式,服务器会在 我们的代码修改后, 自动重新载入,有错误的话会提醒,每次修改代码后就不需要再手动重启
  • 相关阅读:
    mysql数据增删改查
    Python中的逻辑运算
    Python的格式化输出
    Python变量的命名规则
    解释型语言和编译型语言的比较?
    SQLAlchemy
    ansible
    算法
    数据分析
    scrapy之日志等级
  • 原文地址:https://www.cnblogs.com/wuzaipei/p/9853556.html
Copyright © 2011-2022 走看看