Я сделал фид 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?Я что-то упускаю?