根据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。我必须在Django中这样做,因为我的服务器上没有mod_rewrite。
我想我应该把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')但是它似乎不起作用,因为我得到了以下错误(您必须将==更改为!=才能看到此):
NoReverseMatch /feed/myfeed/ “
<function feed at 0x16a2430>”与参数'()‘和关键字参数'{'url':u'myfeed','feed_dict':{'myfeed':<class 'feeds.MyFeed'>}’未找到。
如何解决这一问题?
发布于 2009-05-15 22:02:37
这里的问题是您从您的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')发布于 2012-01-06 13:47:13
嗯,我想这对一个人很有帮助,他想知道在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')https://stackoverflow.com/questions/870979
复制相似问题