Python + Flask动态生成的RSS提要无效

时间:2016-03-13 14:12:46

标签: python flask rss jinja2

我正在尝试在patife.com/rss/上为我的博客应用创建RSS Feed。该应用程序是在带有Flask的python上构建的。我尝试创建一个模板,该模板将动态生成包含所有条目的RSS ..但它无效

  • 我似乎无法使用JINJA函数将日期格式转换为RFC-822。我正在尝试strfdate函数。
  • 进入描述标记内的条目实际内容并不是非常好地使用HTML。

这是当前的代码(我删除了链接生成器bc的工作,我不能发布链接太多的帖子)

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Patife.com</title>
        <link>http://www.patife.com/</link>
        <description>Startups. I can't help myself.</description>
            {% for entry in entries %}
                <item>
                  <title>{{ entry.title_en }}</title>
                  <link>http://www.patife.com/entries/{{ entry.id }}</link>
                  <guid>http://www.patife.com/entries/{{ entry.id }}</guid>
                  <pubDate>{{ entry.date_created.strftime('') }}</pubDate>
                  <description>{{ entry.text_en|safe }}</description>
                </item>
            {% endfor %}
    </channel>
</rss>   

1 个答案:

答案 0 :(得分:0)

您的日期无效,因为您使用的是天真的日期时间。他们没有与他们相关的时区信息。大多数数据库都不支持时区感知值,因此您需要将所有天真日期时间转换为感知日期时间,或者只是在模板中包含时区。

<pubDate>{{ entry.date_created.strftime('%a, %d %b %y %T') }} UTC</pubDate>

HTML无法验证的原因是,当您在XML中嵌入HTML时,它会被视为XML。 RSS不支持任意标记,因此验证失败。 XML允许您通过将非转义值包含在CDATA分隔符中来将非转义值嵌入到节点中。

<description><![CDATA[{{ entry.text_en|safe }}]]></description>