Django Ajax вернуть сообщения об ошибках

-1

Как я могу вернуть сообщение об ошибке с помощью 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 ответа

4

Вы можете, конечно, возвращать сообщения об ошибках из своего приложения Django. Но вы должны определить, какую ошибку вы хотите вернуть. Для этого вам придется использовать коды ошибок.

Наиболее известными являются 404 для страницы не найденной или 500 для ошибки сервера. У вас также может быть 403 для запрещенного доступа... Это зависит от того, что вы хотите лечить. Вы можете увидеть страницу википедии для просмотра возможностей.

Вместо отправки '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
        }
    });
  • 0
    так переменная status_code уже в системе django?
  • 0
    function () {return f && (c &&! b && (h = f.length-1, g.push (c)), function d (b) {n.each (b, function (b, c) {n.isFunction ( с) a.unique && j.has (с) || f.push (с):?! с && c.l ength && "строка" == типа N. (с) && д (с)})} (Arg ), C &&! B && i ()), this} Я получаю этот код после попытки: data.error в javascript ...
Показать ещё 2 комментария
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"})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню