2

javascriptからdjangoテンプレートに$postリクエストを使用しようとしていますが、機能していないため、何かが足りません。

私のコードをお見せします:

これはテンプレートです:

//TEMPLATE
//This code will send a string to django "views.py" file,
//then it will show a pop up message from the data retreived from "views.py"

function test_post(){ 
   $.post("/xhr_test", 
      {name: "Monty", food: "Spam", csrftoken : "{{ csrf_token }}" },

      function(data) {
          alert(data)
      ;}); 
};

これはviews.pyです:

// VIEWS.PY
//Depending on the type of request it will send a message or another.


def xhr_test(request):
    if request.is_ajax():
        if request.method == 'GET':
            message = "This is an XHR GET request"
        elif request.method == 'POST':
            message = "This is an XHR POST request"
            # Here we can access the POST data
            print request.POST
    else:
        message = "No XHR"
    return HttpResponse(message)

このコードは、「これはXHRPOSTリクエストです」というメッセージを表示しません。ただし、$ getリクエストを使用すると、「これはXHRGETリクエストです」というメッセージが表示されます。

同様の疑問がこのスレッドでの答えでした。そこで提供された回答を使用していますが、コードは機能しません。

答えは「{{csrf_token}}」に関連しているに違いないと思いますが、どうすればよいかわかりません...

どんな種類の助けもいただければ幸いです。

4

2 に答える 2

0

csrfトークンの正しい投稿キーはcsrfmiddlewaretoken、デフォルトの使用方法に従っている場合ですdjango.middleware.csrf.CsrfViewMiddleware

ただし、CSRFドキュメントのAJAXセクションを確認する必要があります。

于 2013-01-15T09:56:20.233 に答える
0

これが csrf トークンによるものである場合 (firebug を使用してブラウザーで確認できます)、views.py でこれを使用します。

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def xhr_test(request):
   ...........
于 2013-01-15T09:59:11.263 に答える