Django 分页和当前页面与其他值货币名称按钮"USD"或"EUR"



我试图在Django加密货币项目page_number和currency中传递2个值,例如美元。

  1. 页面加载加密货币与defalut转换器以美元计价
  2. 用户可以将货币从美元更改为欧元、日元或人民币
  3. 当我在第一页上时,它很好,但在第二页上,它会让我回到第一页,只转换属于该页的加密货币

我的问题是如何将加密货币转换为美元、欧元、日元或人民币,就像第一页一样我当前所在的页面将被发送(保存(

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,但它对没有任何作用

<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请求中找到了一个,它会将会话变量设置为新选择的值,以便下次代码可以使用该值。

最新更新