0

RSSをdjangoで動作させようとしています

私はソーシャルブックマークアプリを持っています。

localhost:8000/feeds/recent/ の RSS ページにアクセスしようとすると

次のエラーが表示されます。

Could not import django.contrib.syndication.views.feed. View does not exist in module django.contrib.syndication.views.

私はpython 2.7.3とdjango 1.5.1を使用しています

関連すると思われるコードのみを示します。

feeds.py に次のコードがあります

from django.contrib.syndication.views import Feed
from bookmarks.models import Bookmark

class RecentBookmarks(Feed):
    title = 'Django Bookmarks | Recent Bookmarks'
    link = '/feeds/recent/'
    description = 'Recent bookmarks posted to Django Bookmarks'
    def items(self):
        return  Bookmark.objects.order_by('id')[:10]

urls.py には次のコードがあります。関係のない URL は除外しました。

import os.path
from django.conf.urls.defaults import *
from bookmarks.views import *
from bookmarks.feeds import *
from django.views.generic import TemplateView
from bookmarks.models import Link, Bookmark, Tag, SharedBookmark

site_media = os.path.join(
    os.path.dirname(__file__), 'site_media'
)

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

admin.site.register(Link)
class BookmarkAdmin(admin.ModelAdmin):
    list_display = ('title', 'link', 'user')
    list_filter = ('user',)
    ordering = ('title',)
    search_fields = ('title',)
admin.site.register(Bookmark, BookmarkAdmin)
admin.site.register(Tag)
admin.site.register(SharedBookmark)

feeds = {
    'recent': RecentBookmarks
}


urlpatterns = patterns('',
    # Feeds
    (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', 
                            {'feed_dict': feeds }),
)

models.py は次のようになります。

from django.db import models
from django.contrib.auth.models import User

class Link(models.Model):
    url = models.URLField(unique=True)
    def __str__(self):
    return self.url


class Bookmark(models.Model):
    title = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    link = models.ForeignKey(Link)
    def __str__(self):
    return '%s %s' % (self.user.username, self.link.url)
    def get_absolute_url(self):
        return self.link.url
4

1 に答える 1

0

私が Django を学んでいる本はかなり古いものです。

Django のドキュメントを見て、必要な URL パターンが RecentBookmarks に直行できるようになったことを発見しました。

ここ初めて見た

そしてこれと比較

この比較から、URL パターンを次のように変更する必要があることがわかりました。

(r'^feeds/(?P<url>.*)/$', RecentBookmarks()),

また、 RSS サブスクリプション拡張機能をインストールしない限り、RSS は google chrome ブラウザーで動作しないこともわかりました。

これらの変更を行った後、正しく動作するようになりました。

于 2013-06-07T19:53:31.037 に答える