Фреймворк для синдикации django: добавление CSS в RSS
Добавить CSS в RSS довольно просто, как показано здесь: http://www.petefreitag.com/item/208.cfm
Создать RSS легко с помощью django, как описано здесь: https://docs.djangoproject.com/en/1.3/ref/contrib/syndication/
Как совместить эти два? Или лучше, как добавить CSS в RSS при использовании фида фрейма django?
Я знаю, что могу создать свой собственный XML-файл RSS, но зачем мне это делать, если фреймворк работает просто отлично? Мне просто нужен способ связать CSS, чтобы я мог использовать подсветку кода или что-то в этом роде.
Каковы наилучшие практики для предоставления красивых RSS в Django?
2 ответа
Я считаю, что один из способов сделать это - создать пользовательский вид страницы и указать URL-адрес для этого вида страницы (изменив пример со страницы синдикации Django):
(r'^beats/(?P<beat_id>\d+)/rss/$','yourapp_views_custompageview'),
Затем в этом просмотре страницы верните <?xml-stylesheet type="text/css" href="http://you.com/rss.css" ?> + BeatFeed()
где BeatFeed - ваш FeedClass.
Я не пользуюсь фреймворком прямо сейчас, поэтому мне сложно его протестировать. Пожалуйста, дайте мне знать, если это работает или у вас возникли трудности.
Вы также можете посмотреть на: https://code.djangoproject.com/browser/django/trunk/django/utils/feedgenerator.py.
Это, вероятно, не стоит усилий, учитывая этот ответ, но я нашел способ сделать это, что довольно уродливо, но работает с выводом XML. Решение, приведенное выше, не работает в Django 1.5.
В своем классе Feed я перезаписываю метод вызова следующим образом:
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