2009-06-09 9 views
1

Schnelle Frage. In meinem Syndication Code-Feed Rahmen,Zugriff auf das Sitzungsobjekt in Django Syndication-Framework-Code

http://docs.djangoproject.com/en/dev/ref/contrib/syndication/

was ist der beste Weg, um Zugang zu der Sitzung zu bekommen? Ich habe nicht Zugriff auf die Anfrage, und ich kann nicht

from django.contrib.sessions.backends.db import SessionStore 

benutzen, wie ich die Session-ID nicht kennen, aber ich brauche einige der Variablen in der Sitzung zuzugreifen.

das heißt ich habe:

from django.contrib.syndication.feeds import Feed 
class LatestPhotos(Feed): 
    ... 

und in dieser LatestPhotos Klasse, ich brauche etwas in der Sitzung zugreifen, um den logischen Fluss zu steuern. Ich finde keine Dokumentation über die beste Art und Weise, dies zu tun.

Danke

Danke!

+0

Syndication-Feeds haben keine Benutzer oder eine Sitzung. Was versuchst du zu machen? –

Antwort

2

Es scheint wie ein Design-Fehler zu versuchen, auf Sitzungsdaten in der LatestPhoto-Klasse zuzugreifen. Ich würde davon ausgehen, dass, wenn Ihr Syndikations-Feed von einer Sitzungsvariablen abhängt, die Elemente, die Sie syndizieren (LatestPhotos), mit dieser Variablen erstellt werden sollten?

Können Sie die Logikflussentscheidung treffen, bevor Sie das Objekt LatestPhotos konstruieren, oder zumindest die Sitzungs-ID an die Initialisierungsroutine LatestPhotos übergeben?

+0

+1: Syndication ist session-less. Es ist eine Ankündigung von Änderungen an der Site, die an jeden weitergegeben werden, der ein GET on/feeds/durchführt. Es gibt weder Sitzung noch Benutzer. –

+0

Das Problem ist, dass Sie ein dict von url => Feed-Klassenzuordnungen in Ihrer urls.py-URL-Musterdefinition angeben müssen. Ich habe also zu keiner Zeit Zugriff auf die Sitzung (oder zumindest die Anfrage), sodass ich sagen kann, für welche "Seite" die Anfrage ist. Dies ist beim Booten definiert, während der Anfrage überhaupt nicht. Gedanken darüber, wie man es angesichts dieser Einschränkungen macht? Vielen Dank! – sleach

+0

Sieht so aus, als ob jemand andere ähnliche Funktionen haben möchte: http://code.djangoproject.com/ticket/2912 – sleach

0

Ich habe es herausgefunden - drrr, so einfach. Die Syndizierung Rahmen-Feed-Klasse hat ein Mitglied Anfrage genannt ... so einfach ich nie daran gedacht :)

[Dieser Kommentar gilt 1.1 und frühere Syndizierung Rahmen django]

Verwandte Themen