我想創建一個裝飾爲Flask路線標誌某些航線爲public,這樣我就可以做這樣的事情:創建瓶公共URL裝飾
@public
@app.route('/welcome')
def welcome():
return render_template('/welcome.html')
在其他地方,這裏就是我在想裝飾和檢查會是什麼樣子:
_public_urls = set()
def public(route_function):
# add route_function's url to _public_urls
# _public_urls.add(route_function ...?.url_rule)
def decorator(f):
return f
def requested_url_is_public():
from flask import request
return request.url_rule in _public_urls
然後當一個請求時,我有檢查requested_url_is_public
上下文功能。
我有點難住,因爲我不知道如何獲得public
裝飾器中給定函數的url規則。
也許這不是Flask的最佳設計選擇,但我希望有另一個簡單的&優雅的方式來實現這一點。
我以前見過這種模式,想模仿它。例如,這是Django的login_required
修飾器的對應物。
我很喜歡讀這方面的想法。
魔術!爲此歡呼。 –
糟糕 - 我只是意識到,儘可能接近我想要的,我不太確定這是我需要的答案。我有大約4個公共網站和100多個私人網站。我不想污染代碼w /'@ login_required',所以我想有一個例如'before_request',否認所有的公共請求,除非在視圖上有'@ public'。我希望你能明白爲什麼這不是答案,但你發佈的內容絕對是一個很好的領先。如果我拿出答案,我會標記這個正確的,併發布我所做的。乾杯。 –