Django 1.1基于日期的通用视图问题 - archive_year,archive_month,archive_day

时间:2009-12-19 02:11:09

标签: python html django django-templates

我正在浏览我的第一个Django博客,并尝试按年,月,日使用Django内置的通用视图来获取帖子,但是我没有得到正确的结果。 (对不起我的非专业第一个问题..如果有人知道什么是合适的问题,请告诉我)

嗯,我认为最好向您展示我的配置,以便让自己更好:

完整的博客URLconf:

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'),
)

urls.py:

urlpatterns = patterns('',
(r'^blog/', include('weblog.urls.entries')),
...
)

entry_archive_year.html:

            <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模式,我无法弄清楚在哪里。 我很感激对此的任何支持。

1 个答案:

答案 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}}