新しいユーザー登録を処理するためにdjango-registrationを使用しているDjangoアプリケーションがあります。登録を許可するかどうかを決定する前に、ユーザーの年齢を確認できるように、登録フォームに生年月日を追加したいと思います。しかし、私はプロファイル情報として生年月日を保存する必要はありません。これを登録フォームに追加し、登録プロセスの一環として年齢を検証するにはどうすればよいですか?Django登録フォームに年齢認証を追加するにはどうすればよいですか?
4
A
答えて
5
組み込みの登録フォームを拡張して、DOBフィールドとclean_メソッドを追加して、特定の時刻より前であることを検証します。あなただけだろう通常のRegistrationForm
ようDOBRegistrationForm
を使用し、あなたの意見で
from datetime import datetime
from registration.forms import RegistrationForm
class DOBRegistrationForm(RegistrationForm):
date_of_birth = forms.DateField()
def clean_date_of_birth(self):
dob = self.cleaned_data['date_of_birth']
age = (datetime.now() - dob).days/365
if age < 18:
raise forms.ValidationError('Must be at least 18 years old to register')
return dob
:のようなもの。 registration.views.register
を使用している場合は、クラスをform_class
パラメータとして渡すだけです。
この方法では、データベースに行を作成せずにDOBが許容範囲内にない場合、フォームエラーが発生します。
8
閏年を考慮していないという点で、rzの答えに軽微な欠陥があります。
:誰かが1994年1月1日に生まれている場合はRZの答えで述べた誕生日のチェックはここで
2011年は、アカウントに閏年をとる代替バージョンですが、12月28日に18あるとして、それらを計算します
from datetime import date
from registration.forms import RegistrationForm
class DOBRegistrationForm(RegistrationForm):
date_of_birth = forms.DateField()
def clean_date_of_birth(self):
dob = self.cleaned_data['date_of_birth']
today = date.today()
if (dob.year + 18, dob.month, bod.day) > (today.year, today.month, today.day):
raise forms.ValidationError('Must be at least 18 years old to register')
return dob
+0
ありがとう、dob.dayの代わりにbod.dayがあることに注意してください。編集するには小さすぎる – sidarcy
関連する問題
- 1. prestashop 1.7の登録フォームにフィールドを追加するにはどうすればいいですか?
- 2. SMS登録を使用してユーザー登録を確認するにはどうすればよいですか?
- 3. laravelフォームのデータを認証登録に追加
- 4. 登録フォームでhtmlベースの証明書を作成するにはどうすればよいですか?
- 5. どのようにWordPressの登録フォームにいくつかの追加フィールドを追加するには?
- 6. mvcフォーム認証でカスタムフィールドを追加するにはどうすればよいですか?
- 7. すでにプロジェクトに登録されているユーザ認証を電子メール認証に変更するにはどうすればよいですか?
- 8. ユーザー登録後にペーパークリップで画像を追加するにはどうすればよいですか?
- 9. Djangoのauth.loginセッションの長さ/年齢を設定するにはどうすればよいですか?
- 10. Django Celery Flower Monitoringに認証とエンドポイントを追加するにはどうすればいいですか?
- 11. Webアプリケーションの登録ページにHTTPSを追加するにはどうすればよいですか?
- 12. getdate()を使用してユーザーの年齢を確認するにはどうすればよいですか?
- 13. Androidスタジオの登録フォームのonClick検証を設定するにはどうすればいいですか?
- 14. Django登録フォーム確認メール
- 15. BroadcastReceiverをスイッチに登録および登録解除するにはどうすればいいですか?
- 16. AZUREポータルのWebテストに認証証明書を追加するにはどうすればよいですか?
- 17. Djangoの認証と登録
- 18. MediaWikiで追加のHTMLタグをブラックリストに登録するにはどうすればいいですか?
- 19. フォームにスタイルを追加するにはどうすればよいですか?
- 20. サービスファブリックにカスタムシリアライザを登録するにはどうすればよいですか?
- 21. ノードアプリケーションでDjango認証を使用してユーザーを認証するにはどうすればよいですか?
- 22. (年齢順)アライリストに追加
- 23. Springでカスタムタイプコンバータを登録するにはどうすればよいですか?
- 24. AbstractMongoEventListenerをプログラムで登録するにはどうすればよいですか?
- 25. 年齢から年齢層に加入
- 26. ユーザーを確認するにはどうすれば登録できますか?
- 27. 時間、日、年の年齢を示す年齢計算ツールを作成するにはどうすればよいですか?
- 28. Djangoに「動的」インクルージョンタグを登録するにはどうすればよいですか?
- 29. FirebaseでDisplayNameに電子メール+パスワード認証を追加するにはどうすればよいですか? Android
- 30. オーバーライドされたFOSUserBundle登録フォームのエラーを表示するにはどうすればよいですか?
パーフェクト!この例の問題は、datetimeから日付を引くことができないということだけですが、これは私が必要とするところに私をもたらしました。ありがとう。 –
以下のTreyの解はより正確です。 – GetItDone