我有相关的index.html分页Django的
在我有一个表格来过滤查询视图视图,以及一个表,我把我从查询中获得的元素
最近我添加了分页,因为有时查询可能有数千个结果。
我这里使用的所示的例子https://docs.djangoproject.com/en/1.5/topics/pagination/
如果我使用的形式和进行查询我得到的数据分页,但如果我点击下一步我失去了我在表单中的数据,所以查询变化
我看到的问题是,形式回应POST方法,但点击“下一步”生产用GET方法的请求,所以当form = FilterForm(request.POST)
执行,形式是有效的,但空
感谢
编辑:视图
if request.method == 'POST': # If the form has been submitted...
form = FilterForm(request.POST) # A form bound to the POST data
if form.is_valid():
total_events_list = Make the Query
else:
form = FilterForm() # An unbound form
total_events_list = Make another Query
paginator = Paginator(total_events_list, PAGE_LIMIT, orphans=9)
try:
latest_events_list = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
latest_events_list = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
latest_events_list = paginator.page(paginator.num_pages)
context = {'latest_events_list': latest_events_list, 'form': form}
return render_to_response('db_interface/index.html', context, context_instance=RequestContext(request))
模板的
示例代码,因为它需要每次进行分页时间的形式来筛选查询
<p> Filter events </p>
<form action="/db_interface/" method="POST">{% csrf_token %}
FORM
<input type="submit" name ="filter" value="Submit" />
</form>
{% if latest_events_list %}
<form action="indexzip" method="POST">
{% csrf_token %}
{% for event in latest_events_list %}
SHOW DATA
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if latest_events_list.has_previous %}
<a href="?page={{ latest_events_list.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ latest_events_list.number }} of {{ latest_events_list.paginator.num_pages }}.
</span>
{% if latest_events_list.has_next %}
<a href="?page={{ latest_events_list.next_page_number }}">next</a>
{% endif %}
</span>
</div>
</form>
难道你不能只使用GET?我的意思是,如果它只是过滤,POST作为REST动词无论如何没有什么意义,因为它不会改变任何数据。看到这里:http://www.cs.tut.fi/~jkorpela/forms/methods.html – XORcist
感谢您的链接。我使用GET进行了测试。问题在于页面现在不会加载表单上的初始值,并且原始问题继续 –
但您可以将视图函数/ html模板中的表单值传递给您!在分页链接中,您只需将这些过滤器值添加到查询字符串中。 – XORcist