2011-01-04 3 views
10

Я хочу обновить переменную сеанса Django после события Javascript (ну, собственно, jQuery).Обновить переменную сеанса Django в javascript?

Нужно ли это делать с помощью запроса POST?

Или может Javascript и Django разделять переменные сеанса каким-то умным способом, и в каком случае я могу обновить переменные сеанса напрямую из jQuery? Я немного туманна в деталях.

Спасибо!

ответ

17

Вы можете сделать это через Ajax. Вам нужен простой вид Django, который обновляет переменную сессии, которую JQuery будет вызывать:

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

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

и JS:

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

У вас есть опечатка на ваш взгляд, Джанго, завершающую '] 'после того, как вы присвоите значение. Кроме того, вы должны вернуть 'HttpResponseNotAllowed (['POST',])' вместо 'Http404()' –

+0

Надеюсь, вы не против моего исправления. Также заменяется ', а не' на 'или нет'. – jweyrich

+0

спасибо chaps ... – AP257

Смежные вопросы