【发布时间】:2020-03-10 06:26:02
【问题描述】:
我创建了以下 Ajax 请求以将数据发送到我的 views.py。发送请求后,视图应将其保存在我的数据库中。我的实际代码的问题是我在表单中提交的值没有被保存。
这是我尝试过的: HTML/JS
<script>
$(document).ready(function () {
$("#test").submit(function (event) {
$.ajax({
type: "POST",
url: "/ajtest/",
data: { csrfmiddlewaretoken: "{{ csrf_token }}",
state:"inactive",
data: $('#test').serialize(),
},
success: function () {
$('#message').html("<h2>Submitted.</h2>")
}
});
return false;
});
});
</script>
<form method='post' id='test'>
{% csrf_token %}
<input type="text">
<input type='submit' value='Test button'/>
<div id='message'>Initial text</div>
</form>
这是视图:
def ajtest(request):
if request.method == 'POST':
model = MyModel()
model.value = request.POST['data']
model.user = request.user
model.save()
messages.success(request, f"Success!!")
else:
messages.success(request, f"Error")
return HttpResponse('ok')
这里,user 正在被保存。当我点击 Ajax 表单时,我看到数据库中出现了一条新记录,问题是,在 value 列中我没有看到表单中提交的数据,而是我会看到一个空白字段或,现在,请求的 CSRF 令牌。有人可以帮我找到问题吗?我确定它在 Ajax 请求中。
【问题讨论】: