2016-11-29 1 views
0

양식에 제공 한 오류 메시지를 표시하려고하지만 오류 메시지 대신 ID 이름 만 표시합니다.python django를 사용하여 ajax에서 양식의 오류 메시지를 표시하는 방법

여기

def security(request): 
    if request.method == 'POST': 
      securityField = SecurityCode(request.POST) 

      if taxpayerField.is_valid(): 
       return HttpResponse("success") 
      else: 
       return HttpResponse(taxpayerField.errors) 

주 Form.py

class SecurityCode(forms.Form): 
    sCode = forms.RegexField(regex=r'^\w+$', widget=forms.TextInput(attrs=dict(id="scode", name="scode", required=True, size=25, placeholder=" Security Code")), error_messages={ 'invalid': "This value must contain only letters, numbers and underscores." }) 

Views.py 내 코드

의 :이 뷰의 오류 메시지가 없습니다 얻으려고 내 자바에 경고하려고하기 때문에 내 HTML에. 또한 이것은 원래 샘플 코드가 아닙니다.

답변

1

이 작업을 시도 할 수 있습니다 :

views.py :

from django.http import JsonResponse 

def security(request): 
    form = SecurityCode(request.POST) 

    if not form.is_valid(): 
     return JsonResponse({ 
      'success': False, 
      'err_code': 'invalid_form', 
      'err_msg': form.errors, 
     }) 

    #[...] Actions if form is valid ... 

    return render(request, 'template.html') 
코드 자바 스크립트

:

def submit_form(){ 
    var data = { 
     field1: '...', 
     field2: '...', 
     csrfmiddlewaretoken: 'csrftoken', 
    }; 

    $.ajax({ 
     url: '/submit/form/', 
     method: 'POST', 
     data: data, 
     dataType: 'json', 
     success: function (data){ 
      if (data.success){ 
       // Actions ... 
      } 
      else if (data.err_code === 'invalid_form'){ 
       for(var key in data.err_msg){ 
        console.log('[error] for ' + key + ': ' + data.err_msg[key][0]); 
       } 
      } 
     }, 
    }); 
} 

나는 각 필드에 대한 오류 메시지의 복구를 설명하기 위해 CONSOLE.LOG 사용 .

+0

감사합니다. 그것은 작동합니다! – jned29

관련 문제