URL配置:
from blog.feeds import RssSiteNewsFeed urlpatterns = [ url(r'^rss.xml$', RssSiteNewsFeed()), ]
feeds模块:
#!/use/bin/env python # _*_ coding:utf-8 __ from django.contrib.syndication.views import Feed from .models import Article from django.utils.feedgenerator import Rss201rev2Feed class CorrectMimeTypeFeed(Rss201rev2Feed): mime_type = 'application/xml' class RssSiteNewsFeed(Feed): feed_type = CorrectMimeTypeFeed author_name = "" title = "" link = "" description = "" def items(self): return Article.objects.all().order_by('-created_time')[:5] def item_title(self, item): return item.title def item_link(self, item): return '/article/%s' % item.url
然后就出现了一个奇怪的现象,
明明已经解析出来了xml内容,有两个问题:
浏览器明明说了是Content-Type:application/rss+xml; charset=utf-8
类型的文件,可是为什么显示的确实字符串呢?而不应该显示xml格式的内容。
Django のドキュメントを参照してください。デフォルトでは、feed_type は RssUserland091Feed、Rss201rev2Feed、Atom1Feed の 3 つのクラスのみをサポートします。コードでは Rss201rev2Feed から継承するカスタム クラスを使用するため、root_attributes メソッドと add_root_elements メソッドを実装する必要があります。詳細については、カスタム Feed クラスを参照してください。