1

http://docs.djangoproject.com/en/dev/ref/contrib/syndication/に従ってAtomフィードをセットアップしました。つまり、次のようなものがあります

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

私の中urls.py

class MyFeed(Feed):
    ...

私の中でfeeds.py

このフィードからのトラフィックを FeedBurner にリダイレクトしたいと考えています。サーバーに mod_rewrite がないため、Django でこれを行う必要があります。


urls.pyエントリを次のように変更する必要があると思います

(r'^feeds/(?P<url>.*)/$', 'feeds.redirect', {'feed_dict': feeds})

feeds.pyと補足

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

def redirect(request, **kwargs):
    if request.META['HTTP_USER_AGENT'] == 'FeedBurner':
        view = 'django.contrib.syndication.views.feed'
        return HttpResponseRedirect(reverse(view, kwargs=kwargs))
    else:
        return HttpResponseRedirect('http://feeds2.feedburner.com/MyFeed')

しかし、次のエラーが表示されるため、機能していないようです (これを表示するには、に変更==する必要があります!=)。

/feeds/myfeed/ の NoReverseMatch

<function feed at 0x16a2430>引数 '()' およびキーワード引数 '{'url': u'myfeed', 'feed_dict': {'myfeed': } <class 'feeds.MyFeed'>}' を持つ ' ' の逆が見つかりません。

これはどのように解決できますか?

4

2 に答える 2

2

ここでの問題はdjango.contrib.syndication.views.feed、urls.py から参照を削除したことです。

逆方向を使用して別の URL にリダイレクトする代わりに、既存のビューからフィードを返すようにしてください。

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.syndication.views import feed

def redirect(request, **kwargs):
    if request.META['HTTP_USER_AGENT'].startswith('FeedBurner'):
        return feed(request, **kwargs)
    else:
        return HttpResponseRedirect('http://feeds2.feedburner.com/MyFeed')
于 2009-05-15T22:02:37.340 に答える
0

ええと、django 1.3+でそれを行う正しい方法は何だろうと思っている人に役立つと思います

from django.http import HttpResponseRedirect
from feeds import MyFeed #your feed class, check https://docs.djangoproject.com/en/1.3/ref/contrib/syndication/

def burnedFeed(request, **kwargs):
    if request.META['HTTP_USER_AGENT'].startswith('FeedBurner'):
        feed = MyFeed()
        return feed(request)
    else:
        return HttpResponseRedirect('http://feeds2.feedburner.com/MyFeedName')
于 2012-01-06T13:47:13.693 に答える