#django #pagination
#django #разбивка на страницы
Вопрос:
Я создал разбивку на страницы в django, используя выпадающий список, в котором перечислены страницы, из которых пользователь может выбрать. При выборе любого значения вызывается функция javascript, которая вызывает серверную часть django для извлечения данных.
Объект ответа из django включает номер страницы, который был выбран, чтобы можно было сохранить ту же страницу выбранной в HTML (поскольку страница перезагружается для отображения шаблона).
<div>
Pages :
<select name="pagination" id="pagination_id" onchange="pageChange()">
{% for i in pages %}
<option value={{i}} {% if page_selected == i %} selected="selected" {% endif %}> {{i}} </option>
{% endfor %}
</select>
</div>
Однако выпадающий список всегда является первым элементом, даже если данные в таблице HTML изменяются. Значение в page_selected
соответствует, но выпадающий список не выбирается на правильной странице. Что я делаю не так?
Комментарии:
1. Что вы передали в качестве контекста? Что такое
pages
иpage_selected
?2. Объект контекста — это что-то вроде { ‘pages’:pages, ‘page_selected’:page_selected, … }, где pages — это список целых чисел [1,2,3 … n] и page_selected — это значение из выпадающего списка, которое выбрал пользователь (одно из n значений в pages). @WillemVanOnsem
3. но тогда, вероятно
page_selected
, это строка , строка, которая содержит последовательность цифр, но5
не совпадает с'5'
.
Ответ №1:
Если вы передаете параметр непосредственно из request.GET
, то page_selected
это строка.
Вы должны преобразовать его в целое число с int(…)
:
context = {
'pages': pages,
'page_selected': int(page_selected),
# …
}