Django Ajax返回错误消息

时间:2017-05-05 14:33:06

标签: javascript jquery python ajax django

我如何使用django返回错误消息? 我在想这样的事情(我正在使用jsonresponse作为我想要做的一个例子):

def test(request):
if request.method == "POST":
    if form.is_valid():
      form.save
      return JsonResponse({"message":"Successfully published"})
    else:
         '''here i would like to return error something like:'''
        return JsonResponse({"success": false, "error": "there was an error"})
else:
    return JsonResponse({"success}: false, "error": "Request method is not post"})

我想要实现的是从ajax错误函数在模板中呈现错误消息。像这样:

$("#form").on("submit", function(){
        $.ajax({url: "url",
                data: ("#form").serialize,
               success: function(data){
               alert(data.message);  
               },
               error: function(data){
               alert(data.error);
               }
             });

这可能吗?

2 个答案:

答案 0 :(得分:7)

您当然可以从Django App返回错误消息。但是您必须定义要返回的错误类型。为此,您必须使用错误代码。

最常见的是找不到页面的404或者服务器错误的500。你也可以有403禁止访问...这取决于你想要治疗的情况。您可以看到wikipedia page以查看可能性。

而不是发送'success':False使用此:

response = JsonResponse({"error": "there was an error"})
response.status_code = 403 # To announce that the user isn't allowed to publish
return response

使用此jQuery会将答案识别为错误,您将能够管理错误类型。

在JavaScript中管理您的错误:

$("#form").on("submit", function(){
    $.ajax({
        url: "url",
        data: ("#form").serialize,
        success: function(data){
            alert(data.message);  
        },
        error: function(data){
           alert(data.status); // the status code
           alert(data.responseJSON.error); // the message
        }
    });

答案 1 :(得分:1)

试试这个。我认为您的代码中存在语法错误。此外,如果您发布错误消息会更好。我将false更改为False

您也在代码中省略了表单实例。

def test(request):
    if request.method == "POST":
        form = MyForm(request.POST)
        if form.is_valid():
            form.save()
            return JsonResponse({"message":"Successfully published"})
        else:
            '''here i would like to return error something like:'''
            return JsonResponse({"success": False, "error": "there was an error"})
    else:
        return JsonResponse({"success}: False, "error": "Request method is not post"})