首页 > 解决方案 > 使用jquery提交django表单时如何显示错误

问题描述

我正在尝试做一个密码更改表单,但我正在使用 jquery 提交表单,我的问题是当用户使用错误密码提交表单时,我无法收到错误消息,例如新密码和确认新密码没有匹配时,会显示两个密码不匹配,或者如果旧密码错误,则会显示密码不正确,

这是我的代码

profile.html

<form action="." enctype="multipart/form-data" method="POST" id="PassChan__form"> {% csrf_token %}
    <fieldset class="form-group">
        <legend class="border-bottom mb-4">Change Your paswsord</legend>
        <input type="hidden" value="Chan_Pass" name="hidden_data" />
        {{ c_form | crispy }}
    </fieldset>
    <div class="form-group">
        <h6 id="PassChan__show"></h6>
        <img src="{% static 'images/ajax-loader.gif' %}" style="Display:none;" id="PassChan__img">
        <button class="btn btn-outline-info" type="submit"  onclick="submit_form('PassChan__form', 'PassChan__submit', 'PassChan__img', 'PassChan__show', 'no')" id="PassChan__submit">Change Password</button>
    </div>
</form>

视图.py

def profile(request):
    if request.method == 'POST':            
        response_data = {
            'SType': 'danger',
            'message': "An Error Occured, pls try again later"
        }
        c_form = PasswordChangeForm(user=request.user, data=request.POST)
        if c_form.is_valid():
            c_form.save()
            update_session_auth_hash(request, c_form.user)
            response_data = {
                'SType': 'success',
                'message': "Your Password was changed successfully"
            }

        return HttpResponse(json.dumps(response_data), content_type="application/json")
    context={
        'c_form':PasswordChangeForm(user=request.user)
    }
    return render(request, 'users/profile.html', context)

请问我该怎么做

标签: pythondjangopython-3.x

解决方案


尝试类似的东西(这需要一些改变,但应该把你推向正确的方向):

 if c_form.is_valid():
        c_form.save()
        update_session_auth_hash(request, c_form.user)
        response_data = {
            'SType': 'success',
            'message': "Your Password was changed successfully"
        } 
else :
    response_data = {
         'SType' : 'error'
         'message' : c_form.errors
    }

推荐阅读