Python+Flask 动态生成的 RSS 提要无效
Python+Flask dynamic generated RSS feed is invalid
我正尝试在 patife.com/rss/ 为我的博客应用程序创建 RSS 提要。该应用程序基于 python 使用 Flask 构建。我尝试创建一个模板,该模板将动态生成包含所有条目的 RSS。但它无效
- 我似乎无法使用 JINJA 函数将日期格式转换为 RFC-822。我正在尝试函数 strfdate。
- 进入描述标签的实际内容并没有很好地 HTML。
这是当前代码(我删除了 link 生成器,因为它可以正常工作,我无法发布包含太多 link 的帖子)
<?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>
您的日期无效,因为您使用的是原始日期时间。他们没有与他们相关的时区信息。大多数数据库不支持时区感知值,因此您需要将所有原始日期时间转换为感知日期时间,或者只在模板中包含时区。
<pubDate>{{ entry.date_created.strftime('%a, %d %b %y %T') }} UTC</pubDate>
HTML 未验证的原因是,当您将 HTML 嵌入 XML 时,它会被视为 XML。 RSS 不支持任意标签,因此验证失败。 XML 允许您通过将节点包裹在 CDATA
分隔符中来将未转义的值嵌入到节点中。
<description><![CDATA[{{ entry.text_en|safe }}]]></description>
我正尝试在 patife.com/rss/ 为我的博客应用程序创建 RSS 提要。该应用程序基于 python 使用 Flask 构建。我尝试创建一个模板,该模板将动态生成包含所有条目的 RSS。但它无效
- 我似乎无法使用 JINJA 函数将日期格式转换为 RFC-822。我正在尝试函数 strfdate。
- 进入描述标签的实际内容并没有很好地 HTML。
这是当前代码(我删除了 link 生成器,因为它可以正常工作,我无法发布包含太多 link 的帖子)
<?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>
您的日期无效,因为您使用的是原始日期时间。他们没有与他们相关的时区信息。大多数数据库不支持时区感知值,因此您需要将所有原始日期时间转换为感知日期时间,或者只在模板中包含时区。
<pubDate>{{ entry.date_created.strftime('%a, %d %b %y %T') }} UTC</pubDate>
HTML 未验证的原因是,当您将 HTML 嵌入 XML 时,它会被视为 XML。 RSS 不支持任意标签,因此验证失败。 XML 允许您通过将节点包裹在 CDATA
分隔符中来将未转义的值嵌入到节点中。
<description><![CDATA[{{ entry.text_en|safe }}]]></description>