我在Django中使用分页,但使用AJAX,所以我必须将视图中的所有变量值发送到AJAX调用。但是对于当前页面,没有可用的内置变量?正如我看到的官方文件。那么如何发送已经在view.py中计算过的数据?Django分页View.py中的当前页面
<span class="current">
Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
</span>
我在Django中使用分页,但使用AJAX,所以我必须将视图中的所有变量值发送到AJAX调用。但是对于当前页面,没有可用的内置变量?正如我看到的官方文件。那么如何发送已经在view.py中计算过的数据?Django分页View.py中的当前页面
<span class="current">
Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
</span>
唯一明智的方式做分页/ AJAX/Django的模板标签,将产生Django的视图整个表+当前页面数据+导航表等。即将表格的所有变量从包含页面移动到表格的视图。
可能是一个更好的解决办法是找到你自己一个javascript表格组件,并有Django的服务它的数据...
而不是创建两种不同的意见,你可以通过添加一个GET传递来自同一视图的分页内容参数添加到url,以检查页码并将ajax请求发送到同一视图。这样,对于相同的内容,管理一个视图而不是两个视图会更容易。如果您的视图不仅仅是生成特定的内容,而且您正在使用ajax,那么您可以轻松拆分视图,以便一个视图仅传送相关内容。
例如,如果您的视图的URL是\url-to-somepage
您可以发送Ajax请求\url-to-somepage?page=2
然后在你的模板文件,说template.html
,include
另一个模板,说__sub_template.html
将为其分页内容。像,
<div>
<!--
rest of the page
-->
{% include 'templates\__sub_template.html' %}
</div>
那么在你看来,
.def your_view(request):
"""
Your code here
"""
paginator = Paginator(contacts, number)
page = request.GET.get('page')
try:
result_list = paginator.page(page)
except PageNotAnInteger:
result_list = paginator.page(1)
except EmptyPage:
result_list = []
if page:
return render(request, '__sub_template.html', {'contacts': result_list})
else:
return render(request, 'template.html', {'contacts': result_list})
有没有它的任何工作实例?我越来越迷惑,因为我不知道它是如何工作的。 – Tousif
文档内的示例工作。基本上你会需要两个模板。你必须包含模板,使用脚本等等一切都在那里。 –