1
.ajaxを使用してビューにデータを送信しようとしていますが、CSRFトークンが見つからないか間違っています。 @sure_csrf_cookieデコレータをビューに追加して、csrfクッキーがあることを確認するページをレンダリングしました。 私はそれが送信されるDjangoの1.10.5とjQuery 3.1.1CSRFトークンが抜けているか不正なdjango
Javascriptを
var csrftoken = Cookies.get('csrftoken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
function updateWaypoints(){
var routeArray =Array(),
routeArray = control.getWaypoints();
routeArray.push({route_id:routeId});
console.log(routeArray);
console.log(JSON.stringify(routeArray));
var newData = JSON.stringify(routeArray);
$.ajax({
type: 'POST',
url: '/routes/savemaproute/',
data: newData,
});
}
ビュー機能を使用していた:
@login_required
def save_map_route(request):
if request.user in route.owner_user.all():
if request.POST:
recieved_json_data = request.POST['data']
route_id = request.POST['route_id']
route = get_object_or_404(Route, pk=route_id)
route.map_waypoints = recieved_json_data
route.save()
return HttpResponseRedirect(reverse('route:details', args=(route_new.pk,)))
urls.py
urlpatterns =[
url(r'^$', views.index, name='index'),
url(r'^savemaproute/$', views.save_map_route, name='save_map_route'),
]