Как я могу вернуть сообщение об ошибке с помощью 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);
}
});
Это возможно?
Вы можете, конечно, возвращать сообщения об ошибках из своего приложения 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
}
});
Попробуй это. Я думаю, что в вашем коде есть синтаксическая ошибка. Кроме того, будет лучше, если вы опубликуете сообщение об ошибке. Я изменил 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"})