У меня настроена подача Atom в соответствии с http://docs.djangoproject.com/en/dev/ref/contrib/syndication/, что означает, что у меня есть что-то вроде
(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 в / feeds / myfeed /
Обратное для '<function feed at 0x16a2430>
' с аргументами '()' и аргументами ключевых слов '{' url ': u'myfeed', 'feed_dict': {'myfeed': <class 'feeds.MyFeed'>
}} 'не найдено.
Как это можно решить?