簡體   English   中英

使用藍圖時,為什么裝飾器需要括號?

[英]When working with blueprints, why do decorators required brackets?

我有一個藍圖應用程序,我正在嘗試集成Flask-Security-Too 在我的藍圖中,我有兩條路線:

@core_bp.route("/")
@auth_required
def home():
   print("test")
   return render_template('/core_bp/index.html')


@core_bp.route("/get-projects")
@auth_required
def get_projects():
    searchTerm = request.args.get("search")
    data = [
        "buchsweg 5" ,
        "tannenweg 1"
    ]

return jsonify(data)

在這種情況下,我收到以下錯誤:

AssertionError: View function mapping is overwriting an existing endpoint function: core_bp.wrapper

但是當我用@auth_required()替換auth_required時它工作得很好嗎? 它現在正在工作,但很高興了解它為什么工作?

您需要括號,因為可以將 3 個可選參數傳遞給裝飾器,如第 275 行所示

https://github.com/Flask-Middleware/flask-security/blob/master/flask_security/decorators.py

一般來說some_decorator是一個常規的裝飾器,而some_decorator()是一個可調用的,它返回一個裝飾器,如前一個問題中所述:

使用帶或不帶括號的 python 裝飾器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM