2016-10-15 9 views
0

データベースモデルなしでforms.Formを拡張してDjangoフォームを作成しました。 CharFieldでblank = Falseを設定すると、Djangoの検証によってフィールドが空であるかどうかがチェックされます。モデルを持たないDjangoフォームで空白をFalseに設定する方法

EDIT:views.pyで はforms.pyで

def login(request): 
    if request.method=='POST': 
     ##### 
     ##### 
    else: 
     form=LoginForm() 
     buttontext='Login' 
     return render(request,'index.html',{'buttontext':buttontext,'form':form}) 

:= Falseを代わりに空白の=真

class LoginForm(forms.Form): 
    username=forms.CharField(label="Username",max_length=30,blank=False) 
    password=forms.CharField(label="Password",widget=forms.PasswordInput(),blank=False) 
    class Meta: 
     help_texts={'username':None,} 
    def clean(self): 
     self.cleaned_data=super(LoginForm,self).clean() 
     u=self.cleaned_data['username'] 
     try: 
      us=Account.objects.all().get(username=u) 
      p=self.cleaned_data['password'] 
      print 'original:', us.password 
      print 'got:', p 
      if p!=us.password: 
       add_error('password','Incorrect password') 
     except Account.DoesNotExist: 
      self.add_error('username','Username does not exist!') 
     return self.cleaned_data 
+0

明確にするために、forms.pyとviews.pyコードを共有してください。 –

+2

私は本当に**ここにプレーンテキストでパスワードを保存していないことを願っています。すぐにこのコードをすべて削除し、組み込みのDjango認証システムを使用してください。 –

+0

@DanielRoseman私はパスワードがプレーンテキストで保存されないことを知っている、それはむしろハッシュされています。しかし、これは単なるテストプロジェクトです。私はちょうどdjangoを学んでいます。私はまだプロダクションレベルのプロジェクトに割り当てられていません。私は本当に組み込みの認証ライブラリを使用することを学ぶ必要があります –

答えて

1

@Daniel Rosemanの上記のコメントを指摘します。パスワードの保存にこのフォームを使用しないでください。少なくともnot how you're doing itです。 については、フォームもあります:requiredを入力してください。blankではありません。空白はモデルの場合はrequired is for formsです。

class LoginForm(forms.Form): 
    username=forms.CharField(label="Username",max_length=30,required=False) 
    password=forms.CharField(label="Password",widget=forms.PasswordInput(),required=False) 
+1

答えをありがとう。これは単なるテストプロジェクトです。私はパスワードがハッシュ値として保存されるべきであることを知っています。私はdjabgoの組み込み認証パッケージを学ばなければならない。 –

1

使用を必要と

例:

username=forms.CharField(label="Username",max_length=30,required=True) 

Djangでモデルのo、blank = Falseは、フォームのrequired = Trueと相関します。

関連する問題