Как кешировать переменную с Flask? - PullRequest
0 голосов
/ 19 июня 2020

Я создаю веб-форму, используя Flask, и хотел бы, чтобы пользователь мог вводить несколько записей и дать им возможность пожалеть о записи с помощью кнопки отмены перед отправкой данных в базу данных. Я пытаюсь использовать Flask -Caching , но мне не удалось настроить его должным образом.

Я следил за Flask Mega-Tutorial для настройки up Flask (это мое первое приложение Flask).

+---app
|   |   forms.py
|   |   routes.py
|   |   __init__.py
|   +---static
|   +---templates

Интересно, как мне нужно настроить приложение Flask, чтобы в основном иметь возможность делать следующие вещи:

cache.add("variable_name", variable_data)
variable_name = cache.get("variable_name")
cache.clear()

на одной из страниц (функции с декораторами @ app.route)?

В приложении init .py У меня есть:

from flask import Flask
from config import Config
from flask_caching import Cache

app = Flask(__name__)
app.config.from_object(Config)
cache = Cache(app, config={'CACHE_TYPE': 'simple'})

from app import routes

В routes.py у меня есть:

from flask import current_app

, и я использую приведенный ниже код, когда пытаюсь вызвать кеш.

current_app.cache.add("variable_name", variable_data)

При попытке использовать форму я получаю следующее error:

AttributeError: 'Flask' object has no attribute 'cache'

Практически во всех учебных пособиях, которые я нашел, просто было объявление приложения и все маршруты в одном модуле. Но как мне получить доступ к кешу, если у меня есть маршруты в другом модуле?

1 Ответ

1 голос
/ 20 июня 2020

Чтобы использовать объект cache в routes.py, вы должны сначала импортировать его (откуда вы его создали, т.е. app/__init__.py):

from app import cache

Затем используйте его:

cache.add("variable_name", variable_data)
...