仿照官方的文档:http://docs.djangoproject.com/en/1.2/topics/pagination/
jinja2的模板和django的模板还是有区别的,稍微改了下官方的例子
模板:
jinja2的模板调用 has_nex的时候需要加上() ,另外就是他的if的语法要注意{%- if cont.number==p %} 总之jinja2替换掉原来django的模板还是很合适的。没有遇到太多的问题。
jinja2的模板和django的模板还是有区别的,稍微改了下官方的例子
def news_list(request):
"""列表,测试分类使用"""
users = UserState.objects.all()
now = datetime.datetime.now()
after_range_num = 5 #当前页前显示5页
befor_range_num = 4 #当前页后显示4页
p = Paginator(users,2)
try:
page = int(request.GET.get("page",1))
except ValueError:
page = 1
try:
cont = p.page(page)
except(EmptyPage,InvalidPage):
cont =p.page(p.num_pages)
if page >= after_range_num:
page_range = p.page_range[page-after_range_num:page+befor_range_num]
else:
page_range = p.page_range[0:int(page)+befor_range_num]
return render_to_response("list.html",{
'cont':cont,
'page_range':page_range
})
模板:
<body>
{%for bc in cont.object_list%}
<font color="#3366CC">session_id is:</font>{{bc.session_key }}<br/>
{%endfor%}
{%if cont.has_previous() %}
[url=?page={{ cont.previous_page_number() }}]上一页[/url]
{% endif %}
当前第{{cont.number}}页 /共 {{ cont.paginator.num_pages }}页({{cont.paginator.count}}条数据).
{%if cont.has_next() %}
[url=?page={{cont.next_page_number()}}]下一页[/url]
{%endif%}
{{cont}}
<div>
{% for p in page_range %}
{%- if cont.number==p %}
<span>{{p}}</span>
{% else %}
[url=?page={{p}}]{{p}}[/url]
{% endif %}
{% endfor %}
</div>
</body>
jinja2的模板调用 has_nex的时候需要加上() ,另外就是他的if的语法要注意{%- if cont.number==p %} 总之jinja2替换掉原来django的模板还是很合适的。没有遇到太多的问题。