Django 1.1 - общая проблема представления на основе даты - archive_year, archive_month, archive_day - PullRequest
0 голосов
/ 19 декабря 2009

Я нахожусь в моем первом блоге 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 / блог / 2009 / Декабрь / 18 / тест

и теперь запрос

example.com / блог / 2009 /

Я не получаю никаких объектов, хотя при указании полного URL отображается сообщение.

Я думаю, что Джанго где-то молча терпит неудачу, хотя в режиме отладки, и я не могу понять, где. Я буду признателен за любую поддержку с этим.

1 Ответ

2 голосов
/ 19 декабря 2009

Информация о месяце хранится в контекстной переменной date_list, а не pub_date.

Из документации Django для archive_year:

Контекст шаблона:

В дополнение к extra_context, контекст шаблона будет:

  • date_list: список объектов datetime.date, представляющих все месяцы, в которых есть объекты, доступные в данный год, в соответствии с набором запросов, в порядке возрастания.

Следующее должно сделать трюк:

{% for month in date_list %}
    <li>
        <a href="/blog/{{ year }}/{{ month|date:"b" }}/">{{ month|date:"F" }}</a>
    </li>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...