django jinja2 分页的例子

仿照官方的文档:http://docs.djangoproject.com/en/1.2/topics/pagination/
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的模板还是很合适的。没有遇到太多的问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值