Найти - Пользователи
Полная версия: Django Paginator (отображение результатов поиска)
Начало » Django » Django Paginator (отображение результатов поиска)
1
Gorazio
Всем привет. Прошу направить меня на путь истинный по следующему вопросу:
-есть простенькая форма для поиска по базе:
...
<form action="/search/" method="get">
<input type="text" name="q">
<input type="submit" value="Найти">
</form>
...
-есть функция во views.py:
...
def search(request):
q = request.GET['q']
man_list = Manufact.objects.filter(naim_man__icontains=unicode(q))
paginator = Paginator(man_list, 2)
page = request.GET.get('page','1')
try:
manufacts = paginator.page(page)
except PageNotAnInteger:
manufacts = paginator.page(1)
except EmptyPage:
manufacts = paginator.page(paginator.num_pages)
return render_to_response('search_results.html',
{"manufacts": manufacts, "man_list": man_list})
-и кусок шаблона search_results.html:
...
{% for m in manufacts.object_list %}
<br>{{ m.naim_man }}</br>
{% endfor %}

<div class="pagination">
<span class="step-links">
{% if manufacts.has_previous %}
<a href="?page={{ manufacts.previous_page_number }}">Prev</a>
{% endif %}
<span class="current">
Page {{ manufacts.number }} of {{ manufacts.paginator.num_pages }}
</span>
{% if manufacts.has_next %}
<a href="?page={{ manufacts.next_page_number }}">Next</a>
{% endif %}
</span>
</div>
Разбиение на страницы происходит правильно, элементы отображаются тоже правильно, но при переходе на вторую страничку Django показывает ошибку:
MultiValueDictKeyError at /search/
"Key 'q' not found in <QueryDict: {u'page': [u'2']}>"
Подскажите пожалуйста, что не так, и как правильно отобразить результаты поиска.
Паджинацию настраивал руководствуясь этим.
ziro
Паджинация здесь не при чем. Просто измените код получения параметра “q” на что-то типа такого:

q = request.GET.get('q', '')
а то питон считает что ключ “q” обязательно должен быть в GET-параметрах.
Gorazio
Ziro, спасибо Вам большое, теперь все ОК)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB