:?!
呼び出すときにmake_object_list=True
を設定した場合archive_year
の場合、その年のオブジェクトリストはobject_list
として利用可能になります。簡単な例として、
、あなたのURLパターンが
info_dict
が
queryset
と
date_field
を含む辞書である、
url(r'^(?P<year>\d{4}/$', 'archive_year', dict(info_dict,make_object_list=True),
name="entry_archive_year")
説明に変更し
url(r'^(?P<year>\d{4})/$', 'archive_year', info_dict, name="entry_archive_year")
のように見える場合:
汎用ビューarchive_year
にはオプションのar文章make_object_list
。デフォルトではfalseに設定され、object_list
が空のリストとしてテンプレートに渡されます。
make_object_list
:今年のオブジェクトの完全なリストを取得してテンプレートに渡すかどうかを指定するブール値。 True
の場合、テンプレートのこのリストはobject_list
となります。 (名前はobject_list
は異なる可能性があります;下の「テンプレートコンテキスト」セクションのobject_list
のドキュメントを参照してください)。デフォルトでは、これはFalse
です。
これは、オブジェクトリスト全体をentry_archive_year
ビューに表示したくない場合があるためです。その年の何百ものブログ投稿があり、1ページに表示するにはあまりにも多くのブログ投稿があるかもしれません。
archive_year
は、date_list
をテンプレートコンテキストに追加します。これにより、その年の毎月のアーカイブページへのリンクを、エントリを持つ月間に作成することができます。
date_list
:昇順で、クエリセットによると、与えられた年で使用可能なオブジェクトを持っているすべての月を表すdatetime.date
オブジェクトのリスト。
さらに詳しい情報はDjango docsです。
date_list
を使用する方法の例は、以下のコメントで要求されるように:私はしました
<ul>
{% for month in date_list %}
<li><a href="/blog/{{month|date:"Y"}}/{{month|date:"b"}}>
{{month|date:"F"}}</a></li>
{% endfor %}
</ul>
注:
date_list
を使用するには、あなたのentry_archive_year
テンプレートはこのようなものが含まれますURLをハードコード - 実際にはurl template tagを使用する方が良いでしょう。野生で使用されているdate_list
の例については、Django Weblog 2009 Archiveをご覧ください。
完璧!あなたの迅速で分かりやすい答えをありがとう。 urls.pyから設定を渡す方法についてはわかりませんでしたが、この例が見つかりました:http://github.com/garethr/django-train/blob/ed60ace848e39d2d007929b2316d090886887a57/src/train/urls.py フォローアップ、date_listを使った良い例へのリンクがありますか? –
他に誰かが同じ問題を抱えている場合に備えてurls.pyを変更する方法を示し、 'date_list'についてもう少し詳しく書いた例を追加しました。 – Alasdair
詳細な投稿とフォローアップをありがとうございました。 –