【发布时间】:2011-11-15 08:24:14
【问题描述】:
我正在使用django-pagination 对我的页面进行分页。效果很好,但我想设置
<link rel="prev" href="http://www.example.com/foo/?page=1" />
<link rel="next" href="http://www.example.com/foo/?page=3" />
到<head>,就像是recommended by google。
但是我发现没有办法做到这一点(至少没有额外的查询)。首先,我尝试用类似这样的方式编辑pagination/templates/pagination.html
{% block extra_head %}
<link rel=... ... />
{% endblock %}
这当然不起作用(pagination.html 包含在{% paginate %} 标记中,它不会扩展我的layout.html)。接下来,我尝试将 /foo/ 视图的模板修改为类似这样的内容(添加 {% block extra_head %}):
{# foo.html #}
{% extends "layout.html" %}
{% block content %}
{% load pagination_tags %}
{% autopaginate object_list %}
{% paginate %}
{% for obj in object_list %}
{{ obj }}
{% endfor %}
{% paginate %}
{% endblock %}
{% block extra_head %}
<link rel="prev" href="?page={{ page_obj.previous_page_number }}"/>
{% endblock %}
但这也不起作用,因为 page_obj 变量仅在 {% block content %} 范围内可用。 A 可以调用
{% autopaginate object_list %}
在extra_head 块中,但这意味着对数据库的额外打击(可能还有其他我不知道的副作用)。有没有一种优雅的方法来解决这个问题,最好是尽可能干燥?
编辑:我使用的是 django 1.2。
【问题讨论】: