творю Ajax вызова, как показано ниже:Forbidden (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.
CSRF токен в Ajax вызова становится визуализируется как:
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 не может сравниться с относительным. Вместо этого вы можете получить хэш-значение маркера 'csrf' вручную из своего html в вашей функции вызова. – Kasramvd
Добавьте отображаемый HTML-шаблон в этот вопрос. – v1k45
@ v1k45 Я добавил визуализированный {{csrf_token}} в отредактированный вопрос. Помимо этого, я просто рисую несколько строковых значений в шаблоне, который работает нормально – ankit