2017-09-26 1 views
2

HTML 페이지에 오류 메시지가 표시되는 데 문제가 있습니다. 가입 페이지에 장고의 기본 UserCreationForm을 사용하고 있습니다. 두 개의 암호 필드 (원본과 확인 용)가 있습니다. 사용자가 다른 암호를 입력하면 Value Error이/signup /에있는 반면 HTML 페이지에 암호가 일치하지 않는다는 오류 메시지가 표시되기를 원합니다. 필자는 문서를 살펴보고 관련 코드를 코드에 추가했습니다. 어디서 잘못되었는지 알지 못합니다. 여기 DefaultUserCreationForm - django의 템플릿에 오류 메시지가 표시됩니다.

내 views.py입니다 :

def adduser(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     print(request.POST) 

     if(form.is_valid): 
      try: 
       user = employees.objects.get(emp_id=request.POST['username']) 
      except employees.DoesNotExist: 
       user = None 

      print(user) 
      if(user != None): 
       if request.POST['username'] in employees.objects.values_list('manager_id__emp_id',flat=True): 
        g = Group.objects.get(name='Managers') 
        newuser = form.save() 
        newuser.groups.add(g) 
       else: 
        g = Group.objects.get(name='Employees') 
        newuser = form.save() 
        newuser.groups.add(g) 

       return render(request,'login.html',{'form': form}) 
      else: 
       form = UserCreationForm() 
       return render(request,'signup.html', {'form': form, 'msg': 'Enter valid employee id'}) 
    else: 
     form = UserCreationForm() 

     return render(request,'signup.html', {'form': form}) 

여기 내 signup.html입니다 : 문제는이 라인에

<body> 
    <div class="container"> 
     <div class="page-header"> 
      <h1>Sign-up Here</h1>  
     </div> 
     {% block body %} 


     <form method="post"> 
      {% csrf_token %} 
      <font color="orange" size="5px"><p> * Enter your Employee id, as username * </p></font> 
      {{ form.as_p }} 
      <font color="red"> {{ msg }} </font><br> 
      <font color="red"> {{ form.password1.errors }} </font><br> 
      <font color="red"> {{ form.password2.errors }} </font><br> 

      <br> 
      <button class="btn btn-success" type="submit"> Go! </button> 
     </form> 

     {% endblock %}  

    </div> 
</body> 
+0

무슨 형태로 작업을? – Vaibhav

+0

수정할 수있는 코드에 몇 가지 더 많은 문제/수정 사항이 있습니다. –

+0

@Vicmathur는 기본 제공 양식이므로 꼭 필요한 것은 아니며 조치 없이는 정상적으로 작동합니다. –

답변

1

가 :

if(form.is_valid): 

이가 아닌 양식 유효성 검사의 올바른 방법은 대신

을 사용하십시오.
if form.is_valid(): 

또한 양식을 여러 번 선언 할 필요가 없으며 한 번만 수행 할 수 있습니다. 이처럼 :

def adduser(request): 
    form = UserCreationForm(request.POST or None) 
    if request.method == 'POST': 
     print(request.POST) 
     if form.is_valid(): 
      try: 
       user = employees.objects.get(emp_id=request.POST['username']) 
      except employees.DoesNotExist: 
       user = None 

      print(user) 
      if(user != None): 
       if request.POST['username'] in employees.objects.values_list('manager_id__emp_id',flat=True): 
        g = Group.objects.get(name='Managers') 
        newuser = form.save() 
        newuser.groups.add(g) 
       else: 
        g = Group.objects.get(name='Employees') 
        newuser = form.save() 
        newuser.groups.add(g) 

       return render(request,'login.html',{'form': form}) 
      else: 
       form = UserCreationForm() 
       return render(request,'signup.html', {'form': form, 'msg': 'Enter valid employee id'}) 
    return render(request,'signup.html', {'form': form}) 

그리고 거기하는 오류의 diffrenmt 유형, 필드non_field_errors, 수 있으므로이 같은가 someting 사용할 수 있습니다

{% if form.errors %} 
    {% for field in form %} 
     {% for error in field.errors %} 
      <div class="alert alert-danger"> 
       <strong>{{ error|escape }}</strong> 
      </div> 
     {% endfor %} 
    {% endfor %} 
    {% for error in form.non_field_errors %} 
     <div class="alert alert-danger"> 
      <strong>{{ error|escape }}</strong> 
     </div> 
    {% endfor %} 
{% endif %} 
+0

죄송합니다. 어리석은 실수 ... 감사합니다 :) –

관련 문제