Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django如何使用modelform显示错误消息_Python_Django - Fatal编程技术网

Python Django如何使用modelform显示错误消息

Python Django如何使用modelform显示错误消息,python,django,Python,Django,我使用django modelform保存数据, 我使用ajax,所以它不会重定向到其他页面。 提交时,视图create\u post将处理它 但我有一个问题,如果我在电子邮件的存档中键入“abc”并提交。 我知道它不会通过验证,但它不会打印错误消息以让用户知道错误在哪里。 我如何编辑才能达到它? 请引导我。多谢各位 [编辑] 当我编辑此时,返回render(请求,“zh_tw/maininfo.html#5thpage”{form:'form'}) 现在,如果我在email字段中键入'abc'

我使用django modelform保存数据,
我使用ajax,所以它不会重定向到其他页面。 提交时,视图
create\u post
将处理它

但我有一个问题,如果我在电子邮件的存档中键入“abc”并提交。
我知道它不会通过验证,但它不会打印错误消息以让用户知道错误在哪里。
我如何编辑才能达到它? 请引导我。多谢各位

[编辑] 当我编辑此
时,返回render(请求,“zh_tw/maininfo.html#5thpage”{form:'form'})
现在,如果我在email字段中键入'abc',帖子就可以了。
但当它呈现回此页面时,它将发出“错误”警报
它似乎在ajax中运行此部分:
错误:函数(ts){
警报('ERROR!!!');
window.location.reload();
},

模板/main.html

<script type="text/javascript">
$( document ).ready(function() {
    $.ajaxSetup({
        data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
    });

    // Submit post on submit
    $('#create_post').on('submit', function(event){
        event.preventDefault();
        var name = $("#name").val();
        var email = $("#email").val();
        var message = $("#message").val();

        $.ajax({
            url: '{% url 'core:create_post' %}',
            data: { "name":name,"email":email,"message":message,},
            type: 'POST',
            async: false,
            dataType: 'json',
            error: function(ts){
                alert('ERROR!!!');
                window.location.reload();
            },
            success: function(dataArr){
                if(dataArr == 2){
                    alert('success!');
                    window.location.reload();
                }else{
                    alert('something wrong!');
                    window.location.reload();
                }
            }
        });
    });
});
</script>

<div class="section" id="contact">
    <div class="message">
        <form action="." method="POST" id="create_post">
        {% csrf_token %}
        {{ form.non_field_errors }}
        {{ form }}
        <div>
            <input type="text" name="FirstName" id="name" placeholder="your name">
            <input type="text" name="Email" id="email" placeholder="your email">
        </div>
        <textarea placeholder="talk?" name = "Message" id="message"></textarea>
        <br>
        <button type="submit" value="Submit" id="submit">submit</button>
        </form>
    </div>
</div>

如果您有表单错误和表单非字段错误,这将呈现表单错误和表单非字段错误

<div class="section" id="contact">
    <div class="message">
        <form action="." method="POST" id="create_post">
        {% csrf_token %}
        {{ form.non_field_errors }}
        {{ form }}
        <button type="submit" value="Submit" id="submit">submit</button>
        </form>
    </div>
</div>

你还没有展示你的全部观点。显然,如果表单无效,即存在错误,则需要返回它们,以便ajax可以显示它们。else语句之后会发生什么?post是200 OK,但它会向
错误:函数(ts){alert('s)发出警报操作失敗');                 window.location.reload();},
part
<div class="section" id="contact">
    <div class="message">
        <form action="." method="POST" id="create_post">
        {% csrf_token %}
        {{ form.non_field_errors }}
        {{ form }}
        <button type="submit" value="Submit" id="submit">submit</button>
        </form>
    </div>
</div>
def create_post(request):
    form = MessageForm(request.POST or None)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.ip = request.META['REMOTE_ADDR']
        obj.save()
    return render_to_response(request, template="your_template.html", context={form: 'form'})