我正在浏览我的第一个Django博客,并尝试按年,月,日使用Django内置的通用视图来获取帖子,但是我没有得到正确的结果。 (对不起我的非专业第一个问题..如果有人知道什么是合适的问题,请告诉我)
嗯,我认为最好向您展示我的配置,以便让自己更好:
from django.conf.urls.defaults import *
from weblog.models import Entry
entry_info_dict = {
'queryset': Entry.published,
'date_field': 'pub_date',
'template_object_name': 'Entry',
}
urlpatterns = patterns('django.views.generic.date_based',
(r'^$', 'archive_index', entry_info_dict, 'weblog_entry_archive_index'),
(r'^(?P<year>\d{4})/$',
'archive_year', entry_info_dict,
'weblog_entry_archive_year'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/$',
'archive_month',
entry_info_dict,
'weblog_entry_archive_month'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$',
'archive_day',
entry_info_dict,
'weblog_entry_archive_day'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',
'object_detail',
entry_info_dict,
'weblog_entry_detail'),
)
urlpatterns = patterns('',
(r'^blog/', include('weblog.urls.entries')),
...
)
<h2>Archive for {{ year }}</h2>
<ul>
{% for month in pub_date %}
<li>
<a href="/blog/{{ year }}/{{ month|date:"b" }}/">{{ month|date:"F" }}</a>
</li>
{% endfor %}
</ul>
假设我有以下博客条目:
example.com/blog/2009/dec/18/test
现在请求
example.com/blog/2009 /
我没有任何对象,但是在提供完整的URL时会显示帖子。
我认为Django在某个地方默默地失败,虽然它处于DEBUG模式,我无法弄清楚在哪里。 我很感激对此的任何支持。
答案 0 :(得分:2)
月份信息存储在上下文变量date_list
中,而不是pub_date
。
来自archive_year
的django文档:
模板上下文:
除
extra_context
之外,还有date_list
模板的上下文将是:
{% for month in date_list %} <li> <a href="/blog/{{ year }}/{{ month|date:"b" }}/">{{ month|date:"F" }}</a> </li> {% endfor %}
:代表所有的datetime.date对象列表 有可用对象的月份 根据查询集,给定年份, 按升序排列。
以下应该可以解决问题:
{{1}}