Django пагинация и текущая страница с кнопкой названия валюты другого значения "USD" или "EUR"

Я пытаюсь передать 2 значения в моем Django криптовалютном проекте page_number и currency, например USD.

  1. Page Load Crypto currencies with defalut converter to price in USD
  2. User have possibility to change currency from USD to EUR or JPY or CNY
  3. 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-запросе оно было найдено, то он устанавливает переменную сессии равной только что выбранному значению, чтобы в следующий раз код мог использовать это значение

Вернуться на верх