2017-11-19 4 views
0

ユーザーが無効なデータを入力するまで検証を画面に表示したくありません。 ?!ここでDjangoの組み込みUserCreationForm検証を非表示にして、ユーザーが無効なデータを埋め込んだときに表示します

は私のユーザーフォームが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

+0

あなたのテンプレートはどこですか? –

+0

写真で確認が表示されますか?ユーザー名:必須。 150文字以下文字、数字、@ /。/ +/-/_のみです。あなたのパスワードはあなたの他の個人情報に似ていることはできません。 パスワードは8文字以上である必要があります。 パスワードによく使用されるパスワードを使用することはできません。 パスワードは完全に数字であることはできません。私はユーザーが無効なデータを入力するまでこれらを隠したいと思います。私はそれらを画面に表示します –

+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> 

これは、ユーザーが無効なデータを入力するとエラーが表示されます。

+0

ありがとう!それは –

+0

がうれしかったのでうれしかったですが、将来の訪問者のための答えとしてマークする必要があります:) –

関連する問題