【问题标题】:django syndication feed framework: adding CSS to RSSdjango 联合提要框架:将 CSS 添加到 RSS
【发布时间】:2011-10-28 09:58:03
【问题描述】:

将 CSS 添加到 RSS 非常简单,如下所示:http://www.petefreitag.com/item/208.cfm

使用 django 创建 RSS 也很简单,如下所述:https://docs.djangoproject.com/en/1.3/ref/contrib/syndication/

如何将这两者结合起来?或者更好的是,如何在使用 django 提供的提要框架的同时将 CSS 添加到 RSS?

我知道我可以创建自己的 RSS xml 文件,但是如果框架工作得很好,我为什么要这样做呢?我只需要一种链接css的方法,我可以使用代码高亮或类似的东西。

在 django 中提供漂亮的 RSS 的最佳实践是什么?

【问题讨论】:

    标签: css django frameworks rss syndication


    【解决方案1】:

    这可能不值得努力,considering this answer,但我找到了一种方法来做到这一点,这很丑陋,但对 XML 输出有效。上面的解决方案在 Django 1.5 中不起作用。

    在我的 Feed 类中,我像这样覆盖 call 方法:

    from django.contrib.syndication.views import Feed
    
    class MyFeed(Feed)
    
        def __call__(self, request, *args, **kwargs):
            response = super(MyFeed, self).__call__(request, *args, **kwargs)
    
            # Add stylesheet, is it worth it?
            css = '<?xml-stylesheet type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" ?>\n'
            start = '<rss xmlns:atom'
            response.content = response.content.replace(start, css + start)
    
            return response
    

    【讨论】:

    • 我必须同时创建 cssstart 类似字节的对象而不是字符串。所以在每个字符串之前添加一个b。例如start = b'&lt;rss xmlns:atom' (Django 3.1, Python 3.8)
    【解决方案2】:

    我相信这样做的一种方法是创建一个自定义页面视图并将 URL 指向该页面视图(从 Django 联合页面修改示例):

    (r'^beats/(?P&lt;beat_id&gt;\d+)/rss/$','yourapp_views_custompageview'),

    然后在此页面视图中,返回 &lt;?xml-stylesheet type="text/css" href="http://you.com/rss.css" ?&gt; + BeatFeed(),其中 BeatFeed 是您的 FeedClass。

    我现在没有使用提要框架,所以我很难测试。请让我知道这是否有效或遇到困难。

    您可能还想查看:https://code.djangoproject.com/browser/django/trunk/django/utils/feedgenerator.py

    【讨论】:

    • 这看起来像一个黑客......哦,好吧,没有太多可供选择的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多