【问题标题】:Ajax error handling Django responsesAjax 错误处理 Django 响应
【发布时间】:2016-01-20 14:42:55
【问题描述】:

我有一个对 Django 视图方法的 ajax 调用:

$("#formi").submit(function(event){
       event.preventDefault();
        var data = new FormData($('form').get(0));

            $.ajax({
                 type:"POST",
                 url:"{% url 'calculate' %}",
                 data: data,
                 processData: false,
                 contentType: false,
                 csrfmiddlewaretoken: '{{ csrf_token }}',

                 success: function(data){
                     ...

                    },


                 error : function(xhr) {
                        console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console
                    }
            });
       });

这里我通过提交给views.py的表单发送一个.txt来计算一些东西。

这是我的方法:

def calculate(request):

    if request.is_ajax() and request.method == "POST":
        if len(request.FILES) != 0:

            data = request.FILES['some_file']

            if '.txt' in data.name:

                ... calculate...

                return HttpResponse(data, content_type="application/json")
            else:
                raise Http404("No File uploaded")
        else:
            raise Http404("No File uploaded")
    else:
        raise Http404("No POST data was given.")

如您所见,我有 else 语句,以防 a- 不是 ajax 调用 - b- 请求中没有文件 - 并且 c- “.txt”不在文件名中

但是这些else 语句都不起作用。我认为是因为 ajax error 部分,但我无法弄清楚。

如果没有满足这些要求,我如何显示消息、Django 消息或 javascript 警报消息。 也许通过 javascript 创建一个带有消息的新 div。

主要问题当然是验证没有完成。

提前感谢您提供的任何帮助。

【问题讨论】:

  • 在你的JS报错函数中,在你记录xhr.satus之前,能不能加上“console.log('here');”然后让我知道当您发送错误请求时,所有内容都会记录到控制台?编辑:另外,在您的python代码中,您能否在引发每个错误之前添加一个打印语句,并让我知道当您发送错误请求时打印语句是否打印到终端上?仅用于调试目的...
  • 好的。我会这样做并让你知道
  • 您是否尝试改用raise ValidationError('...errormessage...')

标签: javascript jquery python ajax django


【解决方案1】:

您可以使用django printdjango pdb 调试来检查错误。这是一种查找错误的简单方法:

这里是文档:django-pdb

【讨论】:

    猜你喜欢
    • 2016-01-24
    • 1970-01-01
    • 2014-02-24
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    相关资源
    最近更新 更多