2011-01-04 38 views
10

Tôi muốn cập nhật biến phiên Django sau sự kiện Javascript (tốt, thực sự là jQuery).Cập nhật biến phiên Django trong javascript?

Tôi có cần thực hiện việc này thông qua yêu cầu POST không?

Hoặc có thể Javascript và Django chia sẻ các biến phiên một cách thông minh, trong trường hợp nào tôi có thể cập nhật các biến phiên trực tiếp từ jQuery? Tôi hơi mơ hồ về chi tiết.

Cảm ơn!

Trả lời

17

Bạn có thể thực hiện việc này thông qua Ajax. Bạn sẽ cần một cái nhìn đơn giản Django rằng cập nhật các biến session, mà jQuery sẽ gọi:

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

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

và JS:

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

Bạn có một lỗi đánh máy theo quan điểm của Django của bạn, một dấu '] 'sau khi bạn gán giá trị. Ngoài ra, bạn nên trả về 'HttpResponseNotAllowed (['POST',])' thay vì 'Http404()' –

+0

Hy vọng bạn không ngại sửa lỗi của tôi. Cũng thay thế 'và không' bằng' hoặc không'. – jweyrich

+0

nhờ chaps ... – AP257

Các vấn đề liên quan