隐藏Django内置的UserCreationForm验证,并在用户填写无效数据时显示它们

时间:2017-11-19 18:38:08

标签: django python-3.6 verification

我不想在用户填写无效数据之前在屏幕上显示用户名和密码的验证,我该怎么办?!

这是我在forms.py中的用户表单:

 class UserForm(UserCreationForm):

    class Meta():
         model = User
         fields = ('username','first_name','last_name','email','password1','password2',)

    def save(self,commit=True):
        user = super(UserForm,self).save(commit=False)
        user.username = self.cleaned_data["username"]
        user.email = self.cleaned_data["email"]
        user.first_name = self.cleaned_data["first_name"]
        user.last_name = self.cleaned_data["last_name"]
        user.password1 = self.cleaned_data["password1"]
        user.password2 = self.cleaned_data["password2"]
        if commit:
            user.save()
        return user


    def __init__(self,*args,**kwargs):
         super().__init__(*args,**kwargs)
         self.fields['username'].label = 'Username'
         self.fields['first_name'].label = 'First Name'
         self.fields['last_name'].label = 'Last Name'
         self.fields['email'].label = 'Email Address'
         self.fields['password1'].label = 'Password'
         self.fields['password2'].label = 'Re-enter Password'

这是我的注册功能:

 def register(request):
     registered = False

     if request.method == 'POST':
         user_form = UserForm(data=request.POST)
         profile_form = UserProfileForm(data=request.POST)

         if user_form.is_valid() and profile_form.is_valid():
             user = user_form.save()
             user.set_password(user.password1)
             user.save()
             c_user = user_form.instance.id
             profile = profile_form.save(commit=False)
             profile_form.instance.userid = AuthUser(c_user)
             profile.save()

             if 'profilepic' in request.FILES:
                 profile.profilepic = request.FILES['profilepic']

             profile.save()
             registered = True

         else:
             print(user_form.errors)
             print(profile_form.errors)

     else:
        user_form = UserForm
        profile_form = UserProfileForm

     return render(request,'registration/register.html',{'user_form':user_form,'profile_form':profile_form,'registered':registered})

My registration page

My registration template

1 个答案:

答案 0 :(得分:0)

使用此模板:

<div class="container">
<div class="col-xs-12 col-sm-8 col-md-4 col-sm-offset-2 col-md-offset-4">
 <form method="post">
{% csrf_token %}
<div class="panel panel-default text-center">
<h2>Sign up!</h2>
</div>
{% for field in form %}
  <p>
    {{ field.label_tag }}<br>
    {{ field }}
    {% for error in field.errors %}
      <p style="color: red">{{ error }}</p>
    {% endfor %}
  </p>
{% endfor %}
<button type="submit" class="btn btn-success">Signup!</button>
</form>
</div>
</div>

当用户输入无效数据时,这将显示错误。

相关问题