2011-01-04 12 views
10

Desidero aggiornare una variabile di sessione Django dopo un evento Javascript (beh, in realtà jQuery).Aggiorna la variabile di sessione di Django in javascript?

Devo farlo tramite una richiesta POST?

Oppure Javascript e Django possono condividere le variabili di sessione in modo intelligente, nel qual caso è possibile aggiornare le variabili di sessione direttamente da jQuery? Sono un po 'confuso nei dettagli.

Grazie!

risposta

17

È possibile farlo tramite Ajax. Avrete bisogno di una semplice visione Django che aggiorna la variabile di sessione, che la jQuery chiamerà:

def update_session(request): 
    if not request.is_ajax() or not request.method=='POST': 
     return HttpResponseNotAllowed(['POST']) 

    request.session['mykey'] = 'myvalue' 
    return HttpResponse('ok') 

e il JS:

$.post('/update_session/', function(data) { 
    alert(data); 
}); 
+1

Hai un errore di battitura nella vista Django, un trailing '] 'dopo aver assegnato il valore. Inoltre, si dovrebbe restituire 'HttpResponseNotAllowed (['POST',])' invece di 'Http404()' –

+0

Spero non ti dispiaccia la mia correzione. Anche sostituito 'e non' da' o non'. – jweyrich

+0

grazie chaps ... – AP257

Problemi correlati