Я хотел бы создать декоратор для маршрутов Flask , чтобы отмечать определенные маршруты как общедоступные, чтобы я мог делать что-то вроде этого:
@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
Затем, когда делается запрос, у меня есть функция контекста, которая проверяет required_url_is_public
.
Я немного озадачен, потому что не знаю, как получить правило url для данной функции в декораторе public
.
Возможно, это не лучший выбор дизайна для Flask, но я ожидаю, что есть еще один простой и элегантный способ добиться этого.
Я видел подобные шаблоны раньше, и хотел бы имитировать их. Например, это что-то вроде декоратора Django login_required
.
Я бы с удовольствием прочитал мысли по этому поводу.