2016-11-29 22 views
0

フォームに入力したエラーメッセージを表示しようとしていますが、エラーメッセージではなくID名が表示されます。python djangoを使用してajaxでフォームからエラーメッセージを表示する方法

ここに私のコードは

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

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

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

注:私は、このビューにエラーメッセージが表示されない取得しようとしています私は自分のJavaScript上でそれを警告しようとしているので、私の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') 
コードのjavascript

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

関連する問題