2011-01-04 9 views
10

Ich möchte eine Django-Session-Variable nach einem Javascript-Ereignis (na ja, eigentlich jQuery) zu aktualisieren.Update Django Sitzungsvariable in Javascript?

Muss ich dies über eine POST-Anfrage tun?

Oder können Javascript und Django Sitzungsvariablen auf eine clevere Art und Weise teilen, in welchem ​​Fall kann ich die Sitzungsvariablen direkt von jQuery aktualisieren? Ich bin ein bisschen verschwommen auf die Details.

Danke!

Antwort

17

Sie können dies über Ajax tun. Hier finden Sie eine einfache Django Ansicht benötigen, der die Session-Variablen aktualisiert, die die jQuery nennen:

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

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

und die JS:

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

Sie haben einen Tippfehler in Ihrem Django Ansicht, einen nachgestellten '] 'nachdem Sie den Wert zugewiesen haben. Außerdem sollten Sie 'HttpResponseNotAllowed (['POST',]]' 'anstelle von' Http404() 'zurückgeben. –

+0

Ich hoffe, Sie haben nichts gegen meine Behebung. Auch ersetzt "und nicht" durch "oder nicht". – jweyrich

+0

danke chaps ... – AP257