Я использую 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>
, как это рекомендовано Google .
Однако я не нашел способа сделать это (по крайней мере, без дополнительных запросов). Сначала я попытался отредактировать pagination/templates/pagination.html
примерно так
{% block extra_head %}
<link rel=... ... />
{% endblock %}
Что, конечно, не сработало (pagination.html включен в тег {% paginate %}
, он не расширяет мой layout.html
). Затем я попытался изменить свой шаблон для / foo / view примерно так (добавив {% 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 %}
. А мог позвонить
{% autopaginate object_list %}
в блоке extra_head
, но это будет означать дополнительное попадание в БД (и, возможно, другие побочные эффекты, о которых я не знаю). Есть ли элегантный способ решить эту проблему, в идеале максимально СУХОЙ?
Редактировать: я использую django 1.2.