首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Django提要重定向到FeedBurner

将Django提要重定向到FeedBurner
EN

Stack Overflow用户
提问于 2009-05-15 21:39:25
回答 2查看 895关注 0票数 1

根据http://docs.djangoproject.com/en/dev/ref/contrib/syndication/,我有一个Atom提要,这意味着我有一个类似的

代码语言:javascript
复制
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds})

在我的urls.py和类似的

代码语言:javascript
复制
class MyFeed(Feed):
    ...

在我的feeds.py里。

我想从这个提要重定向交通到FeedBurner。我必须在Django中这样做,因为我的服务器上没有mod_rewrite。

我想我应该把urls.py条目改为

代码语言:javascript
复制
(r'^feeds/(?P<url>.*)/$', 'feeds.redirect', {'feed_dict': feeds})

并在feeds.py中添加

代码语言:javascript
复制
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'>}’未找到。

如何解决这一问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-15 22:02:37

这里的问题是您从您的django.contrib.syndication.views.feed中删除了urls.py引用。

与其使用反向重定向到另一个URL,不如只从现有视图返回提要:

代码语言:javascript
复制
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')
票数 2
EN

Stack Overflow用户

发布于 2012-01-06 13:47:13

嗯,我想这对一个人很有帮助,他想知道在django 1.3+中做这件事的正确方法是什么。

代码语言:javascript
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/870979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档