2017-09-19 25 views
0

私はhtmlに同じページでajaxを試してみると動作します。このような;Django 403禁止されたエラー

<html> 
    <head> 
    ... 
    </head> 
    <body> 
    .... 
    <script> 

    $.ajax({ 
     url: /test/, 
     method: 'POST', 
     headers: {'X-CSRFToken': '{{ csrf_token }}'}, 
     data: { name: a, surname: b}, 
     dataType: 'json', 
     success: function (data) { 
      getList(data); 
     } 
    }); 
    </script> 
    </body> 
</html> 

私は外部と同じjavascriptを呼び出すとしようとします。それは動作しません。どうして?

<html> 
    <head> 
    ... 
    </head> 
    <body> 
    .... 
    <script src="{% static 'js/test.js' %}"></script> 
    </body> 
</html> 
+0

djangoで静的ファイルを正しく設定していますか? –

+0

静的ファイルが正しく構成されています。私は403エラーがあります。 – Halim

+0

[docsにはこれに対する解決策があります](https://docs.djangoproject.com/en/1.11/ref/csrf/#setting-the-token-on-the-ajax-request)CSRFトークンが自動的に追加されますすべてのAJAX呼び出しに適用されます。 – dspacejs

答えて

2

のようなグローバル変数としてscriptタグでHTMLページにグローバル変数として{{ csrf_token }}を定義します -

var generated_csrf_token = "{{ csrf_token }}"; 

そして、あなたの.jsでそれを呼び出すファイル、

headers: {'X-CSRFToken': generated_csrf_token}, 

ただし、ドキュメント準備機能内にAJAXコールを入れてください。$(document).ready(function() {***here***}

この方法では、任意のjsファイル内で名前generated_csrf_tokenでアクセスできます。

これは役に立ちます:-)

+1

ありがとうございます。それは仕事です。 – Halim

関連する問題