在Django中更新Feedparser源
我正在用Django写一个简单的聚合网站,类似于popurls,但在更新信息源时遇到了麻烦。
对于每个信息源,我都有一个单独的应用程序来解析并返回请求的信息。为了简单起见,我们就说它只是获取信息源的标题。例如:
#feed source xyz views.py
from django.http import HttpResponse
import feedparser
def get_feed_xyz():
xyz_feed = "http://www.xyz.com/feed.xml"
feed = feedparser.parse(xyz_feed)
info = []
for entry in feed.entries:
info.append(entry.title)
return info
然后我有一个聚合应用程序,它会把所有的链接聚合在一起。
#aggregator views.py
from django.shortcuts import render_to_response
from site.source.views import get_feed_xyz
#etc
aggregate = get_feed_xyz() # + other feeds etc
def index(request):
return render_to_response('template.html',{'aggregate' : aggregate})
我遇到的问题是更新信息源……它们不会更新,除非我重启Apache!我试着写了一个feed_update.py来运行get_feed_xyz()这个命令,但网站还是不更新。我觉得我在理解Django的某些基本部分上有些缺失,因为我就是搞不明白。
1 个回答
1
aggregate
是一个全局变量,这意味着它在整个程序中都可以使用。因此,函数 get_feed_xyz()
只会在模块加载的时候被调用一次。你需要在 index()
函数里面更新它。