Проверьте, является ли пользователь анонимным для аргумента Flask-Cache `исключением`

Я пытаюсь кэшировать представление, если пользователь не вошел в систему. current_user работает только внутри вида, поэтому у меня возникают проблемы при передаче его unless=, Как мне сделать это правильно?

@app.route("/")
@app.cache.cached(timeout=300, unless=current_user.is_authenticated())
def index():
    return 'stuff to return'

1 ответ

Решение

Оберните звонок в lambda, Flask-Cache будет вызывать функцию при выполнении представления, а не один раз, когда представление определено.

@app.cache.cached(timeout=300, unless=lambda: current_user.is_authenticated)

В документах конкретно сказано, что unless должен быть вызываемым, который будет выполняться каждый раз.

Другие вопросы по тегам