ページのページネーションに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>
ているように。
ただし、これを行う方法が見つかりませんでした(少なくとも追加のクエリなしで)。pagination/templates/pagination.html
まず、このようなもので編集しようとしました
{% block extra_head %}
<link rel=... ... />
{% endblock %}
もちろん、これは機能しませんでした (pagination.html は{% paginate %}
タグに含まれており、 my を拡張しません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
、しかしそれはデータベースへの余分なヒットを意味します(そしておそらく私が気付いていない他の副作用)。これを解決するエレガントな方法はありますか?理想的にはできるだけDRYですか?
編集:django 1.2を使用しています。