2009-08-19 11 views
3

Ich arbeite an einer Blog-Anwendung und versuche, nur eine einfache RSS-Feed-System-Funktion gemacht. Allerdings stoße ich auf einen seltsamen Fehler, der für mich nicht sehr sinnvoll ist. Ich verstehe, was wahrscheinlich passiert, aber ich verstehe nicht warum. Meine RSS-Feed-Klasse ist unter:Django RSS Feed Probleme

class RSSFeed(Feed): 
    title = settings.BLOG_NAME 
    description = "Recent Posts" 
    def items(self): 
     return Story.objects.all().order_by('-created')[:10] 

    def link(self, obj): 
     return obj.get_absolute_url() 

jedoch erhielt ich folgende Fehlermeldung (Voll Stack-Trace bei http://dpaste.com/82510/):

AttributeError: 'NoneType' object has no attribute 'startswith' 

Das führt mich zu glauben, dass es nicht empfangen haupt keine Objekte. Ich kann jedoch auf eine Shell zugreifen und diese Story-Objekte abrufen, und ich kann sie durchlaufen, um die absolute URL ohne Probleme zurückzugeben. So scheint es, dass beide Teile des Feeds funktionieren, nur nicht, wenn es sich um Feeds handelt. Außerdem habe ich etwas Protokollierung hinzugefügt und kann bestätigen, dass die Elementfunktion niemals ist, die beim Besuchen der Feeds-Verknüpfung eingegeben wurde. Ich hoffe, ich übersehe einfach etwas Einfaches. Vielen Dank im Voraus für jede/alle Hilfe.

Antwort

4

Wechsel zu:

class RSSFeed(Feed): 
    title = settings.BLOG_NAME 
    link = "/blog/" 
    description = "Recent Posts" 

    def items(self): 
     return Story.objects.all().order_by('-created')[:10] 

es behoben. Nicht sicher, ich verstehe es total ... aber whatev. :)

+0

Vielleicht ist es Link erwartet keine Argumente außer sich selbst zu nehmen, aber Sie zur Verfügung gestellt zu –

+1

Vielen Dank für dieses obj. Ärgerlich, dass, wenn Sie nicht die Link-Eigenschaft bereitstellen, es sich selbst scheißt. Wenn es erforderlich ist, lass es mich wissen. – Tom

1

haben Sie

def get_absolute_url(self): 

im Modell definiert?

auch, es ist schön zu

if not obj: 
    raise FeedDoesNotExist 

Fehler zu vermeiden, wenn Feed Ergebnis nicht vorhanden ist