• Flask基础2 蓝图,实例化配置,app对象配置,特殊装饰器


    实例化Flask时的参数

    from flask import Flask,request,session,render_template,redirect,url_for,send_file
    import setting
    app = Flask(__name__,template_folder="temp",static_folder="jingtaiwenjianmulu",static_url_path="/static")
    # app.secret_key = "jinwangbaMD5de"
    # app.config["SECRET_KEY"] = "jinwangbaMD5de"
    # app.config
    # app.session_cookie_name = "qishiwoyebuzhidaozheshishenmedongxi"
    
    app.config.from_object(setting.Debug)
    # app.config.from_object(setting.XianShang)
    # app.config.from_object(setting.Testing)
    
    def wai(func):
        def neibuhanshu(*args,**kwargs):
            if session.get("user"):
                ret = func(*args,**kwargs)
                return ret
            else:
                return redirect("/login")
        return neibuhanshu
    
    # @app.route("/static/<filename>")
    # def get_static(filename):
    #     # falsk -> static_folder ->
    #     return send_file("statics/" + filename)
    
    
    @app.route("/<nid>",endpoint="index",methods=["POST","GET"])
    # @wai
    def index(nid): # wai(index) -> neibuhanshu -> () endpoint 默认视图函数名
        # print(url_for("neibuhanshu"))
        # print(url_for("neibuhanshu"))
        # print(url_for("qishijiushiyigexiangxiyemian"))
        # print(nid)
        return render_template("index.html")
    
    @app.route("/detail",endpoint="detail")
    # @wai
    def detail(): # wai(detail) -> neibuhanshu -> ()
        return render_template("detail.html")
    
    
    @app.route("/login",methods=["GET","POST"],strict_slashes=False)
    def login():
        if request.method == "GET" :
            return render_template("login.html")
        else:
            session["user"] = request.form.get("username")
            return redirect("/")
    
    
    
    
    
    if __name__ == '__main__':
        app.run(debug=True)
        

     蓝图

    users.py文件中:不能app.run
    from flask import Blueprint,render_template
    
    users_blue = Blueprint("users",__name__,template_folder="user_temp",url_prefix="/user")
    
    @users_blue.route("/user_add") #/user/user_add
    def user_add():
        return render_template("user_add.html")
    使用时记得注册:通过蓝图中的路由访问,
    app_blue.py文件中:
    
    from flask import Flask,request,session,render_template,redirect,url_for,send_file
    import setting
    from serv import users
    app = Flask(__name__,template_folder="temp",static_folder="jingtaiwenjianmulu",static_url_path="/static")
    app.config.from_object(setting.Debug)
    
    app.register_blueprint(users.users_blue)
    
    if __name__ == '__main__':
        app.run(debug=True)

     before_request 和 after_request:

    执行顺序:

    正常:be1 - be2 - be3 - af3 - af2 - af1 
    异常:be1 - af3 - af2 - af1
    from flask import Flask,request,session,render_template,redirect,url_for,send_file
    import setting
    from serv import users
    app = Flask(__name__,template_folder="temp",static_folder="jingtaiwenjianmulu",static_url_path="/static")
    app.config.from_object(setting.Debug)
    
    app.register_blueprint(users.users_blue)
    
    @app.before_request
    def is_login():
        print("be1")
        if request.path == "/login":
            return None
        if session.get("user"):
            return None
        else:
            return redirect("/login")
        
    @app.before_request
    def be2():
        print("be2")
        return None
    
    @app.before_request
    def be3():
        print("be3")
        return None
    
    @app.after_request
    def af3(res):
        print("af3")
        return res
    
    @app.after_request
    def af2(res):
        print("af2")
        return res
    
    @app.after_request
    def af1(res):
        print("af1")
        return res
    
    @app.route("/",endpoint="index",methods=["POST","GET"])
    def index(): # wai(index) -> neibuhanshu -> () endpoint 默认视图函数名
        return render_template("index.html")
    
    @app.route("/detail",endpoint="detail")
    def detail(): # wai(detail) -> neibuhanshu -> ()
        return render_template("detail.html")
    
    
    @app.route("/login",methods=["GET","POST"],strict_slashes=False)
    def login():
        if request.method == "GET" :
            return render_template("login.html")
        else:
            session["user"] = request.form.get("username")
            return redirect("/")
    
    @app.errorhandler(404)
    def error404(args):
        print(args)
        return "您访问的页面不存在或者走丢了,,,,,,%s"%(args)
    
    if __name__ == '__main__':
        app.run(debug=True)

     app对象配置:

    class Debug(object):
        DEBUG=True
        SECRET_KEY="jinwangba"
        SESSION_COOKIE_NAME = "jinwangba's session"
    
    class Testing(object):
        TESTING=True
        SECRET_KEY="yinwangba"
        SESSION_COOKIE_NAME = "yinwangba's session"
        
    class XianShang(object):
        SECRET_KEY = "KingEight"
        SESSION_COOKIE_NAME = "CSRF_TOKEN"
    使用:
            app.debug = True
            app.config["DEBUG"]=True
            
            class FlaskSetting(object):
                DEBUG = True
            
            app.config.from_object(FlaskSetting)
  • 相关阅读:
    ural 1519 fomular 1 既插头DP学习笔记
    2016集训测试赛(十九)Problem C: 无聊的字符串
    2016集训测试赛(十九)Problem A: 24点大师
    2016集训测试赛(二十)Problem B: 字典树
    写一个addEventListener以及removeEventListener
    关于props的注意事项!
    swiper轮播始终居中active图片
    vue中登录模块的插件封装
    v-show
    v-if
  • 原文地址:https://www.cnblogs.com/shuai1993/p/10151773.html
Copyright © 2020-2023  润新知