2016-11-29 62 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