Django if statement для использования контекста в шаблоне
Что я пытаюсь достичь: Я получаю данные из API, я хочу отобразить эти данные в моем шаблоне только при выполнении условий.
Что я пробовал #1: Я добавил булево значение в мою модель, которая связана с API, под названием "accessconfirmed" и затем В моих представлениях я добавил оператор if, говорящий, что если доступ подтвержден, то отображается этот контекст, а если нет, то отображается другой контекст. Я не получаю ошибку, но мои данные из API больше не отображаются, я ничего не получаю. Вот код в views.py
ПРОСМОТРОВ:
def projectdetailscoins(request, pk):
coin = Coin.objects.get(id=pk)
notifications = Notification.objects.all()
accessconfirmed = Coin.is_api_access
api_coin_number_variable = coin.api_coin_number
url = 'XXX'
parameters = {
'slug': coin.api_slug,
'convert': 'USD',
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': 'XXX'
}
session = Session()
session.headers.update(headers)
response = session.get(url, params=parameters)
api_price = response.json()
if accessconfirmed == True:
context = {'coin':coin, 'notifications':notifications,
'gimmeprice':api_price['data'][api_coin_number_variable]['quote']['USD']['price'],
'gimme24h':api_price['data'][api_coin_number_variable]['quote']['USD']['percent_change_24h'],
'accessconfirmed':accessconfirmed,
}
else:
context = {'coin':coin, 'notifications':notifications,}
return render(request, 'blog/project_details_coin.html', context)
Что я пробовал #2: Я также попробовал изменить оператор if с на
if accessconfirmed == True:
to
if accessconfirmed:
данные отображаются правильно в моем шаблоне, если я делаю это, но когда я перехожу к PK без "accessconfirmed" я получаю эту ошибку
KeyError
Тип исключения: KeyError
Значение исключения: 'data'
строка 62 - ...'gimmeprice':api_price['data'][api_coin_number_variable]['quote']['USD']['price'],....
пожалуйста, посоветуйте, что я делаю не так
ИСПРАВИЛ ЕГО.
я понял, что оператор if просто проверяет, подтвержден ли доступ, вместо того, чтобы проверять, подтвержден ли доступ для каждого отдельного объекта, поэтому я изменил его на
if accessconfirmed:
to
if coin.is_api_access:
и теперь все хорошо, оставляю это на случай, если кто-то столкнется с подобными проблемами