2013-01-17 10 views
1

다음 시나리오를 고려하십시오. 페이지가 <form>{% csrf_token %}으로로드되었습니다. 나중에이 양식 (숨겨진 csrf_token 포함)의 제출은 페이지를 다시로드하지 않고 ajax (post)를 사용하여 수행됩니다.
서버 측에서는 토큰을 재생할 때 토큰을 갱신 할 수 있기 때문에 토큰을 클라이언트로 다시 보내고 <form>에있는 토큰을 교체해야 함을 이해합니다.
토큰을 얻고 응답으로 보냅니다. django.middleware.csrf.get_token()을 사용하려고 생각했지만 코드에서는 클라이언트에서 보낸 값을 반환하는 것으로 보입니다.
그래서 get_token()이 최신 상태로 되돌릴 것입니까?django.middleware.csrf.get_token() usage

답변

1

그런 다음

var csrf_token = $(this).data('csrf'); // $(this) refers to your form in your html 

를 사용하여 JS에서 CSRF 토큰을 검색 : 귀하의 답변에 대한

$('#yoursubmitbutton').click(function() { 
$.ajax({ 
      url: url, 
      type: "POST", 
      dataType: "json", 
      data: { csrfmiddlewaretoken: csrf_token, other_data: other_data }, 
      success: function(data) { 
       if (data['success']=='true') { 
        // Handles success 
       } else { 
        // Handles failure failed. 
       } 

       // Any logic you want 
      }, 
      error: function() { 
            // Error handling 
      } 
     }) 
}); // click event 
+1

안녕하세요, 감사합니다! 하지만 당신이 내 질문을 오해 한 것 같아요 : django.middleware.csrf.get_token() 이미 다시 생성 된 토큰을 반환합니다 (다시 생성 된 경우) 또는 않습니다. – Acute