在Django中创建RSS Feed的问题

时间:2016-07-27 12:27:31

标签: django rss

我必须创建一个Web应用程序,显示与即将进行的访谈的服务器相关的事件。我必须包含与服务器相关的所有事件的RSS源。我决定在Django中实现它。

我已经关注了创建Feed的Django教程并查看了教程点教程,但是我发现了以下错误。

在/ server_status / latest / feed /上的DoesNotExist 事件匹配查询不存在。

这是我的Feeds.py:

from django.contrib.syndication.views import Feed
from server_status.models import Event
from django.core.urlresolvers import reverse

class LatestEvents(Feed):
    title="List of All Active and Scheduled Events"
    link="/event/"
    description="This RSS feed contains a list of all active and scheduled events."

    def items(self):
        return Event.objects.order_by('-date_active')

    def item_title(self, item):
        return Event.objects.get(event_title='event-title')

    def item_description(self, item):
        return Event.objects.get(event_description='event_descrption')

    def item_link(self, item):
        return reverse('event', args=[Event.pk])

以下是使用局部变量抛出的错误:

H:\interview\server_status\feeds.py in item_title
        return Event.objects.get(event_title='event-title') ...
▼ Local vars
Variable    Value
item    <Event: Server down for routine maintenance>
self    <server_status.feeds.LatestEvents object at 0x03563230>

事件对象确实存在于我自己添加的数据库中。我通过管理网站添加了它,如果这有任何区别。

如果我的模型出现问题,这就是正在访问的模型:

class Event(models.Model):
    event_status=models.ForeignKey(Status)
    event_title=models.CharField(max_length=50)
    event_description=models.CharField(max_length=500)
    date_active=models.DateField(default=timezone.now())
    time_active=models.TimeField(default=timezone.now())

    def __str__(self):
        return self.event_title

1 个答案:

答案 0 :(得分:2)

我认为您误解了这些方法的用途。它们采用Event的实例,并且应该返回表示该对象的标题和描述的字符串。你可能想要这些内容:

class LatestEvents(Feed):

    def item_title(self, item):
        return item.event_title

    def item_description(self, item):
        return item.event_description

    def item_link(self, item):
        return reverse('event', args=[item.pk])

您不应在这些方法的任何位置使用Event类本身(items()除外)。