У меня есть канал Atom создан в соответствии с http://docs.djangoproject.com/en/dev/ref/contrib/syndication/, который означает, что я что-то вродеПеренаправление Джанго кормить FeedBurner
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds})
в моем urls.py
и что-то вроде
class MyFeed(Feed):
...
в моем feeds.py
.
Я хотел бы redirect traffic от этого фида до 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 в/Корма/myfeed/
реверса '
<function feed at 0x16a2430>
' с аргументами '()' и именованных аргументов '{' URL ': u'myfeed', 'feed_dict': { 'myfeed':<class 'feeds.MyFeed'>
} }' не найдено.
Как это можно решить?
Пользовательский агент FeedBurner содержит номер версии и URL-адрес. Ваша проверка должна быть request.META ['HTTP_USER_AGENT']. Startswith ('FeedBurner'). –
Я просто скопировал чек из вопроса ... но я обновил ответ с правильной проверкой –