Где хранить словарь в Django
У меня есть словарь, который я получаю из API местной компании доставки. Я хочу использовать его в своем приложении для заполнения поля выбора города. Я не хочу получать эти данные каждый раз, когда пользователь загружает страницу. Поэтому мне нужно хранить их где-то и обновлять раз в день. Какой лучший способ сделать это с помощью Django?
url = 'https://api.novaposhta.ua/v2.0/json/'
data = {
"apiKey": "apiKey",
"modelName": "Address",
"calledMethod": "getCities",
"methodProperties": {}
}
city_list_json = requests.post(url, json=data).text
city_dict = {d['Ref']: d['Description'] for d in json.loads(city_list_json)['data']}
Обычная модель Django без поля JSON могла бы прекрасно справиться с этим. Это также даст вам запись информации за предыдущие дни. Ваша бизнес-логика диктует, как часто обращаться к API. Ваши варианты могут быть следующими:
- Установите фоновую задачу для получения данных API раз в день в полночь (или когда угодно); или .
- В вашей модели есть поле 'last_updated', которое проверяется при каждом запросе, если прошло >24 часа, то запрос вызывает вызов API .
Вариант 2 проще в реализации, но его недостатком является то, что если вызов API медленный, то тот, кто делает этот запрос, будет ждать, пока страница загрузится