新しいユーザー登録を処理するために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. どのようにWordPressの登録フォームにいくつかの追加フィールドを追加するには?
- 2. mvcフォーム認証でカスタムフィールドを追加するにはどうすればよいですか?
- 3. Djangoのauth.loginセッションの長さ/年齢を設定するにはどうすればよいですか?
- 4. getdate()を使用してユーザーの年齢を確認するにはどうすればよいですか?
- 5. Django Celery Flower Monitoringに認証とエンドポイントを追加するにはどうすればいいですか?
- 6. フォームにスタイルを追加するにはどうすればよいですか?
- 7. ノードアプリケーションでDjango認証を使用してユーザーを認証するにはどうすればよいですか?
- 8. Springでカスタムタイプコンバータを登録するにはどうすればよいですか?
- 9. Symfony2登録フォームにreCaptchaフィールドを追加
- 10. Djangoでこの「登録」ビューを改善するにはどうすればよいですか?
- 11. フォームにラベルを追加するにはどうすればいいですか?
- 12. ウェブサイトに「法的飲酒年齢」警告を表示するにはどうすればよいですか?
- 13. C#フォームアプリケーションにSQL認証を追加するにはどうすればよいですか?
- 14. ドメインアカウントユーザーをSQL Server 2005 Windows認証リストに追加するにはどうすればよいですか。
- 15. Google/OpenSocialガジェットの認証にasp.netフォーム認証を使用するにはどうすればいいですか
- 16. Facebookの新しいタイムライン機能の認証を追加するにはどうすればよいですか?
- 17. AndroidフォームからDeviseユーザー登録を行うにはどうすればよいですか?
- 18. SublimeTextのSFTPプラグインで「同じ年齢」のファイルを無視するにはどうすればよいですか?
- 19. アプリでWi-Fi追加認証Safari画面を表示するにはどうすればよいですか?
- 20. Twitterの認証コードで画像を追加するにはどうすればよいですか?
- 21. mvcのアカウントの確認まで登録を実行するにはどうすればよいですか?
- 22. Magento - 登録フォームにすべてのユーザーフィールドを表示するにはどうすればいいですか?
- 23. Django登録を完全に削除するにはどうすればいいですか?
- 24. 年齢属性を正しく設定するにはどうすればよいですか?
- 25. ログインフォームに既に登録されているユーザーがデータベースに存在するかどうかを確認するにはどうすればよいですか?
- 26. Djangoでフォームの検証にインスタンスデータを使用するにはどうすればよいですか?
- 27. カスタムdjango登録フォーム
- 28. 年齢確認に関するクッキー法
- 29. 登録フォームに「可用性を確認」オプションを追加しようとしています
- 30. 登録フォームにユーザーロールを追加する方法
パーフェクト!この例の問題は、datetimeから日付を引くことができないということだけですが、これは私が必要とするところに私をもたらしました。ありがとう。 –
以下のTreyの解はより正確です。 – GetItDone