我有一个问题,当我尝试使用ajax保存数据到数据库。
它总是给我 success
...这意味着它工作正常......但它没有保存数据到数据库。
而且我还试着打印 'message': 'form is saved'
在 console.log(data.message)
但它总是给我 undefined
浏览次数
@login_required(login_url='login')
def PostCreateView (request):
form = PostCreateForm()
if request.is_ajax():
form = PostCreateForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.author = request.user
instance.save()
data = {
'message': 'form is saved'
}
return JsonResponse(data)
context = {
"form": form,
}
return render(request, "blog/new_post.html", context)
urls.py
path('new_post/', PostCreateView, name='new_post'),
new_post.html
<form method="POST" enctype="multipart/form-data" class="my-ajax-form" data-url="{% url 'new_post' %}">
{% csrf_token %}
{{form|crispy}}
<input class="btn btn-secondary mt-4" type="submit" value="Add New Post">
</form>
插件.js
$(document).ready(function () {
var $myForm = $('.my-ajax-form'); // select form class
$myForm.submit(function (event) {
event.preventDefault();
var $formData = $myForm.serialize(); // get all data from form which will be submitted to database
var $thisURL = $myForm.attr('data-url') || window.location.href; // data-url is attribute in form
$.ajax({
method:'POST',
url: $thisURL,
data: $formData,
success: handleSuccess,
error: handleError,
});
function handleSuccess(data) {
console.log('success');
console.log(data.message);
$myForm[0].reset();
}
function handleError(ThrowError) {
console.log('error');
console.log(ThrowError);
}
});
});
我尝试了大量的问题和答案在这里......没有一个结果两天。
任何机构可以帮助,请?
感谢提前
form = PostCreateForm(request.POST, request.FILES)
我对使用表单的Ajax没有太多经验,但我认为你并没有在视图中使用你发送的数据(数据:$formData)来使用Ajax获取数据。你只是像普通的验证。请参考这篇文章 https:/dev.tocoderasha如何使用ajax-4bpo发送-django-form?
这是我的看法,PostCreateForm()是你在实例化一个对象。但你传递的是一个变量的比较。
最后你只能得到True, False或None作为参数传递给 PostCreateForm()
python解释器可能会将它们作为比较进行评估,这意味着你可能会用这样的函数调用来结束。PostCreateForm(True,None).