Почему Django Atom1Feed использует atom: updated вместо atom: опубликовано? - PullRequest
3 голосов
/ 10 ноября 2010

Я сделал фид Atom в Django, используя класс, который выглядит примерно так:

class AtomFeed(Feed):

    feed_type = feedgenerator.Atom1Feed

    # ...

    def item_pubdate(self, post):
        return datetime.datetime(post.date.year, post.date.month, post.date.day)

Полученный XML для элемента:

<entry>
  <title>..</title>
  <link href="..." rel="alternate"></link>
  <updated>2010-10-18T00:00:00+02:00</updated>
  <author><name>...</name></author>
  <id>...</id>
  <summary type="html">...</summary>
</entry>

Здесь нужно отметить следующее:дата указывается в элементе atom:updated, а не в элементе atom:published.

RFC явно подсказывает мне, что это не предполагаемое использование:

Элемент atom: updated представляет собой конструкцию Date, указывающую самый последний момент времени, когда запись или фид были изменены так, как издатель считает это значимым.Следовательно, не все модификации обязательно приводят к изменению атома: обновленное значение.

Принимая во внимание:

Элемент «atom: Опубликовал» является конструкцией Date, указывающей моментвремя, связанное с событием в начале жизненного цикла записи.

Это больше, чем просто теоретическая проблема.Например, Google Reader, похоже, не использует элемент updated и использует дату, когда он впервые увидел этот элемент.В результате он не упорядочивает элементы должным образом при первом импорте канала.

Код в Django, ответственный за это:

django/utils/feedgenerator.py:331

if item['pubdate'] is not None:
    handler.addQuickElement(u"updated", rfc3339_date(item['pubdate']).decode('utf-8'))

Кажется, что нет упоминания об элементе published.

Это ошибка в Django?Я неправильно понимаю Atom RFC?Я что-то упускаю?

1 Ответ

0 голосов
/ 18 февраля 2011

Вы ничего не пропустили.RFC Atom верен, и это известная ошибка в Django;смотрите эту ошибку в Django .

Это выглядит как относительно простое исправление, так что не стесняйтесь заходить и исправлять его!^ _ ^

...