django ajax无法将表单保存到数据库中

问题描述 投票:0回答:1

我有一个问题,当我尝试使用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);
        }
    });
});

我尝试了大量的问题和答案在这里......没有一个结果两天。

任何机构可以帮助,请?

感谢提前

jquery ajax forms submit django-3.0
1个回答
0
投票

form = PostCreateForm(request.POST, request.FILES)


0
投票

我对使用表单的Ajax没有太多经验,但我认为你并没有在视图中使用你发送的数据(数据:$formData)来使用Ajax获取数据。你只是像普通的验证。请参考这篇文章 https:/dev.tocoderasha如何使用ajax-4bpo发送-django-form?


0
投票

这是我的看法,PostCreateForm()是你在实例化一个对象。但你传递的是一个变量的比较。

最后你只能得到True, False或None作为参数传递给 PostCreateForm() python解释器可能会将它们作为比较进行评估,这意味着你可能会用这样的函数调用来结束。PostCreateForm(True,None).

© www.soinside.com 2019 - 2024. All rights reserved.