Django AJAX 返回错误消息

bz4sfanl  于 2023-05-01  发布在  Go
关注(0)|答案(3)|浏览(142)

如何返回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);
               }
             });

有可能吗?

wnavrhmk

wnavrhmk1#

当然,您可以从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
        }
    });
vvppvyoh

vvppvyoh2#

试试这个。我想你的代码中有一个语法错误。此外,如果你发布错误消息,会更好。我将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"})
u5rb5r59

u5rb5r593#

这是我的解决方案。我重写了你的代码:

def test(request):
   if request.method == "POST":
      if form.is_valid():
         form.save()
         return JsonResponse({"message":"Successfully published"}, status=200)
      else:
         return JsonResponse({"error": "there was an error"}, status=403)
   else:
      return JsonResponse({"error": "Request method is not post"}, status=403)
$(document).on("submit","#form", function(){
        $.ajax({
            url: "url",
            data: ("#form").serialize,
            success: function(data){
               alert(data.message);  
            },
            error: function(data){
               alert(data.responseJSON.error);
               }
         });

相关问题