3
私はAJAX呼び出し以下のように作っています:禁止(CSRFが見つからないか、間違ったトークン。):
var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken': '{{ csrf_token }}'};
$.ajax({
type: 'POST',
url:"/issuebook",
data:data_dict,
processData: false,
contentType: false,
success:function(response)
{
}
});
urls.pyがある:私は取得しています
urlpatterns = [
url(r'^$',views.checkLogin,name='checklogin'),
url(r'^mylibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.MyLibrary.as_view()),name='mylibrary'),
url(r'^centrallibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.CentralLibrary.as_view()),name='centrallibrary'),
url(r'^issuebook$',login_required(views.IssueBookView.as_view()),name='issuebook'),
]
「禁断(CSRFトークンがないか間違っています):/ issuebook "ajax呼び出しでエラーが発生しました。
AJAX呼び出しでCSRFトークンを取得としてレンダリングされます。このエラーは、あなたのAJAX機能でprocessData
とcontentType
オプションによって引き起こされる
var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken':'fSSdu8dJ4FO6FvDz8eU5ISzOewRYyGbC'};
$.ajax({
type: 'POST',
url:"/issuebook",
data:data_dict,
contentType: false,
success:function(response)
{
}
});
文字列 ''{{csrf_token}}'を' csrfmiddlewaretoken'として渡しました。あなたのajax呼び出しはそれを相対的な呼び出しと一致させることができません。その代わりにあなたの呼び出し関数のhtmlから手動で 'csrf'トークンのハッシュ値を得ることができます。 – Kasramvd
レンダリングされたHTMLテンプレートを質問にも追加してください。 – v1k45
@ v1k45編集した質問にレンダリングされた{{csrf_token}}を追加しました。これとは別に、私はちょうどうまく動作しているテンプレートにいくつかの文字列値をレンダリングしています – ankit