请帮忙解决这个问题
html格式:
<div class="modal fade" id="commonModal" tabindex="-1" role="dialog" aria-labelledby="commonModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="commonModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default but_cancel" data-dismiss="modal">Отменить</button>
<button type="button" class="btn btn-primary but_ok" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
我发送ajax请求如下:
$('#commonModalLabel').text('Удалить профиль?');
$('#commonModal .modal-body').html('Возможность восстановить профиль будет доступна в течение двух недель. Для восстановления нужно отправить <a href="mailto:prozaik81-2@yandex.ru">администратору</a> ресурса письмо с почтового адреса, который был указан в профиле.');
$('#commonModal').modal('show');
$('#commonModal .but_ok').on('click', function(){
console.log('ok');
$.ajax({
url: "/accounts/delete_profile/",
type: 'POST',
dataType:"json",
data: {},
success: function(data) {
if(data.result == true){
$('#mySmallModalLabel').text('Профиль удалён');
$('#infoModal').modal('show');
}
}
});
});
视图.py:
def delete_profile(request):
result = False
if request.method == "POST" and request.is_ajax():
username = request.POST.get('username', '')
try:
entry = User.objects.get(username=username)
entry.is_active = 0
entry.save()
except:
pass
else:
result = True
data = {
'result': result,
}
return HttpResponse(json.dumps(data), content_type='application/json')
问题是日志中出现以下错误消息:
Forbidden (CSRF token missing or incorrect.): /accounts/delete_profile/
如果是表单,我会按如下方式发送令牌:
{% csrf_token %}
但在我的情况下,没有形式(!)。请告诉我在哪儿能买到代币,怎么寄
你的问题在django docs中有解释
请注意,如果没有呈现任何表单,django可能不会发送csrf令牌,则必须使用ensure\u csrf decorator
把它放到AJAX请求中
有时它在某些浏览器中不起作用(在我的例子中是chrome),因此您可以将这些添加到发送到视图的数据中:
$.csrf_token
对我来说是一个全局对象,我把它直接打印到模板上:相关问题 更多 >
编程相关推荐