Talvolta ricevo questo errore nel middleware personalizzato nel metodo process_response. Ho il seguente elenco di middleware:L'oggetto 'WSGIRequest' non ha attributo 'sessione'
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'application.middleware.LastCampaignSessionMiddleware'
]
Così sessione middleware è posto prima del mio middleware. Non ho nessuna espressione del request.session
nel codice sorgente. Questo è il metodo process_response:
def process_response(self, request, response):
if 'last_campaign_id' in request.session and request.session['last_campaign_id']:
if request.COOKIES['last_campaign_id'] != request.session['last_campaign_id']:
response.set_cookie('last_campaign_id', request.session['last_campaign_id'])
return response
Non certo perché potrebbe succedere a tutti.
EDIT 03-08-2012 12-30
Sembra che il browser favicon richiedente:
[03/Aug/2012 10:26:42] "GET /favicon.ico/ HTTP/1.1" 404 6701
Non c'è comportamento predefinito in Django per risolvere questo URL? Perché non ho specificato esplicitamente la vista che dovrebbe gestire questa richiesta. E io non uso favicon nel codice sorgente della pagina. Quindi immagino che sia il browser che richiede /favicon.ico. Immagino che in caso di errore 404 HttpRequest non costruisca correttamente quindi non mi stupisco che non abbia sessione nell'oggetto richiesta. Ma sono solo le mie supposizioni.
Inoltre, se necessario, sto utilizzando il server dev django mentre ricevo questo errore.
EDIT 13-00
ho fissato questo problema con favicon, ma ancora ottenere l'errore. Perché la sessione potrebbe non esistere in richiesta?
Quindi qual è il problema? Se ricevi un errore puoi aggiungere il log a questa domanda? – StefanNch
Oh, è nel titolo: l'oggetto 'WSGIRequest' non ha attributo 'sessione'. Si verifica ogni volta che sto cercando di ottenere qualsiasi URL del mio sito. Si verifica nel metodo process_response di application.middleware.LastCampaignSessionMiddleware. – sunprophit