Django пагинация и текущая страница с кнопкой названия валюты другого значения "USD" или "EUR"
Я пытаюсь передать 2 значения в моем Django криптовалютном проекте page_number и currency, например USD.
- Page Load Crypto currencies with defalut converter to price in USD
- User have possibility to change currency from USD to EUR or JPY or CNY
- When Im on 1 page it works fine but on second and further takes me back to the first page convert only crypto currencies belonging that page
Мой вопрос в том, как конвертировать криптовалюту в USD в EUR или JPY или CNY как на первой странице. чтобы страница, на которой я сейчас нахожусь, была отправлена (сохранена)
index_buttons.py
<div class="row mb-4">
<div class="col-md mb-4">
{% for item in buttons %}
<a href="{% url 'index' %}?currency_type={{item.currency_type}}" class="btn btn-outline-dark {{item.active}}" role="button">{{item.display_text}}</a>
{% endfor %}
</div>
</div>
views.py
def index(request):
selected_currency_type = request.GET.get('currency_type', "USD")
buttons = [
{"currency_type": "USD", "active": "", "display_text": "USD"},
{"currency_type": "EUR", "active": "", "display_text": "Euro"},
{"currency_type": "CNY", "active": "", "display_text": "Chinese Yuan"},
{"currency_type": "JPY", "active": "", "display_text": "Japanese Yen"},
]
for button in buttons:
if button['currency_type'] == selected_currency_type:
button['active'] = 'active'
currecies_list = load_currencies(selected_currency_type)
paginator = Paginator(currecies_list, 12)
page_number = request.GET.get("page")
page_obj = paginator.get_page(page_number)
context = {
"user": request.user,
"page_obj": page_obj,
"buttons" : buttons,
"active_currency_name" : selected_currency_type,
}
return render(request, "web/index.html", context)
Я также пробовал изменить href в buttoms, но это ничего не дает
<a href="{% url 'index' %}?page={{ page_obj.number }}/currency_type={{item.currency_type}}" class="btn btn-outline-dark {{item.active}}" role="button">{{item.display_text}}</a>
Есть идеи или подсказки, как изменить конвертер криптовалюты в валюту на каждой странице?
Я думаю, что вы ищете что-то вроде переменных сессий Django. Это сохранит значение в request, которое вы передаете. Реализация может выглядеть следующим образом:
def index(request):
selected_currency_type = request.GET.get('currency_type')
if not selected_currency_type:
selected_currency_type = request.session['currency_type']
else:
request.session['currency_type'] = selected_currency_type
buttons = #and the rest of your code from that point on
Так код получает новое currency_type и если его не существует, то получает последнее значение из переменных сессии. Если в GET-запросе оно было найдено, то он устанавливает переменную сессии равной только что выбранному значению, чтобы в следующий раз код мог использовать это значение