2014-11-26 3 views
0

데이터를 저장하기 위해 django modelform을 사용합니다.
저는 아약스를 사용하므로 다른 페이지로 리디렉션되지 않습니다. 제출하면 create_post보기가 처리됩니다.Django modelform을 사용하여 오류 메시지를 표시하는 방법

하지만 전자 메일에 'abc'를 입력하고 제출하면 질문이 있습니다.
유효성 검사를 통과하지 못한다는 것을 알고 있지만 오류 메시지가 인쇄되어 사용자에게 실수가 어디 있는지 알려줍니다.
어떻게 수정할 수 있습니까? 나를 안내하십시오. 고맙습니다 .

[편집] return render(request, "zh_tw/maininfo.html#5thpage",{form: 'form'}) 이메일 입력란에 'abc'를 입력하면 게시물이 200입니다.
하지만이 페이지로 다시 렌더링하면 'ERROR!'가 표시됩니다.
는 아약스에서이 부분을 실행처럼 보인다 : error: function(ts){ alert('ERROR!!!'); window.location.reload(); },

템플릿/main.html이 양식 오류를 렌더링과 비 필드를 형성한다

<script type="text/javascript"> 
$(document).ready(function() { 
    $.ajaxSetup({ 
     data: { csrfmiddlewaretoken: '{{ csrf_token }}' }, 
    }); 

    // Submit post on submit 
    $('#create_post').on('submit', function(event){ 
     event.preventDefault(); 
     var name = $("#name").val(); 
     var email = $("#email").val(); 
     var message = $("#message").val(); 

     $.ajax({ 
      url: '{% url 'core:create_post' %}', 
      data: { "name":name,"email":email,"message":message,}, 
      type: 'POST', 
      async: false, 
      dataType: 'json', 
      error: function(ts){ 
       alert('ERROR!!!'); 
       window.location.reload(); 
      }, 
      success: function(dataArr){ 
       if(dataArr == 2){ 
        alert('success!'); 
        window.location.reload(); 
       }else{ 
        alert('something wrong!'); 
        window.location.reload(); 
       } 
      } 
     }); 
    }); 
}); 
</script> 

<div class="section" id="contact"> 
    <div class="message"> 
     <form action="." method="POST" id="create_post"> 
     {% csrf_token %} 
     {{ form.non_field_errors }} 
     {{ form }} 
     <div> 
      <input type="text" name="FirstName" id="name" placeholder="your name"> 
      <input type="text" name="Email" id="email" placeholder="your email"> 
     </div> 
     <textarea placeholder="talk?" name = "Message" id="message"></textarea> 
     <br> 
     <button type="submit" value="Submit" id="submit">submit</button> 
     </form> 
    </div> 
</div> 

views.py

def maininfo(request): 
    # return render(request, 'english/maininfo.html',) 
    return render(request, 'zh_tw/maininfo.html',) 


def create_post(request): 
    if request.method == 'POST': 
     form = MessageForm(request.POST) 
     if form.is_valid(): 
      obj = form.save(commit=False) 
      obj.ip = request.META['REMOTE_ADDR'] 
      obj.save() 
      return HttpResponse(2) 
     return render(request, "zh_tw/maininfo.html#5thpage",{form: 'form'}) 
+0

당신은 당신의보기의 전체를 표시하지 않은 :

<div class="section" id="contact"> <div class="message"> <form action="." method="POST" id="create_post"> {% csrf_token %} {{ form.non_field_errors }} {{ form }} <button type="submit" value="Submit" id="submit">submit</button> </form> </div> </div> 

은 약간 개선이다. 분명히 양식이 유효하지 않은 경우 (예 : 오류가있는 경우), Ajax에서 오류를 표시 할 수 있도록 오류를 리턴해야합니다. else 문 뒤에는 어떻게됩니까? –

답변

0

오류가있는 경우에 대비하여

def create_post(request): 
    form = MessageForm(request.POST or None) 
    if form.is_valid(): 
     obj = form.save(commit=False) 
     obj.ip = request.META['REMOTE_ADDR'] 
     obj.save() 
    return render_to_response(request, template="your_template.html", context={form: 'form'}) 
+0

게시물은 200 OK이지만'''오류를 경고합니다 : function (ts) { alert ('操作 실패'); window.location.reload(); },''''부분 – user2492364

관련 문제