2014-03-27 2 views
1

외부 자바 스크립트 파일에서 ajax 호출을 만들려고합니다.외부 javascript 파일에서 장고 아약스 요청

내가 그것을 찾기 위해 노력

<script>  
    ajax(); 
    {% csrf_token %} 
</script> 

Views.py

def ajax_request(request): 

    if request.POST.has_key('client_response'): 
     x=request.POST['client_response'] 
     response_dict={}          
     response_dict.update({'server_response':'working'}) 
     return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript') 
    else: 
     return render_to_response('ajaxexample.html', context_instance=RequestContext(request)) 

템플릿

function ajax() { 
    setInterval(function() { 
     $.ajax({ 
      url : "/ajax_get.html", 
      type : "POST", 
      dataType: "json", 
      data : { 
       client_response : 'Y', 
       csrfmiddlewaretoken: '{{ csrf_token }}', 
      }, 
      success : function(json) { 
       alert('Working'); 
      }, 
      error : function(xhr,errmsg,err) { 
       alert(xhr.status + ": " + xhr.responseText); 
      }  
     }); 
     alert('Failing'); 
     return false; 
    }, 5000); 
} 

포함을은 ajax.js하지만 유일한 예는 내가 아약스 호출에 직면 양식에서. 내가 달성하고자하는 것은 파일에 아약스 호출의 출력을 추가하는 것입니다. 콘솔은 script 태그 안에 csrf 토큰에 관한 구문 오류가 있음을 알려줍니다.

답변

3

템플릿의 script 태그 안에 CSRF 토큰을 삽입했습니다. 그 자체만으로는 유효한 Javascript가 아니므로 의미가 없습니다.

또한 구문 오류는 아니지만 구문 분석되지 않는 JS 파일 자체 내에서 Django 템플릿 변수 구문을 사용했습니다. 따라서 매개 변수는 원시 문자열 "{{ csrf_token }}"으로 전송됩니다.

그러나 장고 설명서에는 using CSRF with Ajax에 대한 전체 지침이 나와 있으므로이를 따라야합니다.

+0

감사합니다. {% csrf_token %}은 "쉬운"방법으로 그것을 해결하려고 더 많은 도움이되었습니다. –