2016-11-29 42 views
0

我試圖顯示我在窗體上提供的錯誤消息,但它只顯示id名稱而不是錯誤消息。如何使用python顯示Ajax格式的錯誤消息django

這裏是我的代碼

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) 

注:我想進入這個觀點的錯誤信息未在我的HTML,因爲我試圖提醒我的JavaScript。這也只是我的示例代碼,而不是原來的代碼。

回答

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