2017-05-05 4 views
-1

어떻게 장고와 함께 오류 메시지를 반환합니까? 나는 (단지 내가이 작업을 수행하는 방법의 예로서 내가 jsonresponse를 사용하고) 이런 식으로 뭔가를 생각하고 :Django Ajax 반환 오류 메시지

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"}) 

는 내가 달성하기 위해 시도하고 아약스 오류 함수의 템플릿에 오류 메시지를 렌더링하는 것입니다. 다음과 같이 입력하십시오 :

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

가능합니까?

답변

1

시도해보십시오. 귀하의 코드에 구문 오류가 있다고 생각합니다. 또한 오류 메시지를 게시하는 것이 좋습니다. falseFalse

으로 변경했습니다. 또한 코드에서 양식 인스턴스를 생략했습니다.

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"}) 
3

당연히 장고 앱에서 오류 메시지를 반환 할 수 있습니다. 그러나 어떤 유형의 오류를 반환할지 정의해야합니다. 이를 위해 오류 코드를 사용해야합니다.

가장 잘 알려진 페이지는 페이지를 찾을 수 없거나 서버 오류로 500입니다. 금지 된 액세스에 대해 403을 가질 수도 있습니다 ... 처리하려는 경우에 따라 다릅니다. 가능성을보기 위해 wikipedia page을 볼 수 있습니다. 대신 'success':False 사용이를 보내는

이 jQuery로

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

오류로 답을 인식하고 당신은 오류 유형을 관리 할 수 ​​있습니다.

자바 스크립트에서 오류를 관리하려면

$("#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 장고 시스템에 이미? – zzbil

+0

function() {return f && c &&! b && (h = f.length-1, g.push (c)), 함수 d (b) {n.each (b, function (b, c)} {n.isFunction (c) && d (c)})} (c)? a.unique && j.has (c) || ​​f.push (c) : c && c.l ength && "string" 자바 스크립트에서 data.error ... – zzbil

+0

'status_code'는'JsonResponse' 객체의 객체 변수입니다. Django는 그것을 반환 된 에러/성공 코드로 직접 해석합니다. –