2016-07-27 70 views
0

我必須創建一個Web應用程序,它顯示即將到來的面試中與服務器相關的事件。我必須包含與服務器相關的所有事件的RSS源。我決定在Django中實現它。在Django中創建RSS源的問題

我已經按照Django教程創建了一個Feed,並看了一下教程點教程,但是我出現了以下錯誤。

DoesNotExist at/server_status/latest/feed/ 事件匹配查詢不存在。

這裏是我的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 
+0

你的'item_title'和'item_description'方法中的邏輯沒有意義。這些方法應該返回傳遞給函數的'item'對象的標題/描述。你爲什麼試圖在那裏獲取一個新對象?這些函數應該返回一個字符串,而不是'Entry'對象。 – solarissmoke

+0

@solarissmoke所以你建議不要讓對象返回標題和描述的字符串表示形式? – cmackie21

+0

你已經擁有該函數中的一個對象。請參閱下面的答案。 – solarissmoke

回答

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())。

+0

感謝這就是我一直在尋找的!現在工作! – cmackie21