我在Django中创建了一个Atom提要,它使用的类如下所示:
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“元素是一个日期结构,它指示一个条目或提要以发行者认为重要的方式修改时的最新瞬间。因此,并不是所有的修改都必然导致一个更改的atom:更新的值。
鉴于:
“atom:已发布”元素是一个日期构造,表示与条目生命周期早期的事件相关联的瞬间。
这不仅仅是一个理论问题。例如,Google似乎没有使用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?我是不是漏了什么东西?
发布于 2011-02-18 07:34:59
你什么都没错过。Atom RFC是正确的,这是Django中已知的一个bug;请参见这个Django虫。
它看起来像一个相对简单的修补程序,所以您可以随意进入并修补它!^_^
https://stackoverflow.com/questions/4143113
复制相似问题