bind_form指定された django フォームを関数に割り当てるカスタム デコレータがあります。このデコレーターを使用すると、関数の引数に対して検証を「自動的に」実行できます。たとえば、age必要な範囲内にあるかどうかを確認したり、ユーザーが存在することを確認したりします。これは DRY の理由で行われます。
デコレーターで参照される各フォームは、formsモジュール内に存在します。
このフォーム検証の例としては、次のようなものがあります。users.check_user_existsしたがって、usersモジュールをモジュールにインポートする必要がありformます。
これで、モジュールformsをインポートして参照できるようになりましたが、モジュールをインポートしてフォームをフォーム デコレータで使用できるようになりました。usersusers.user_existsusersforms
フォーム.py:
import users
def bind_form(func):
# binds form to function
...
class Create_User(Forms.Form):
# validated create_user function
...
def clean(self): #using for validation
if users.user_exists(user):
...
users.py:
import forms
@forms.bind_form(form=forms.Create_User)
def create_user(**kwargs):
...
usersそのため、がインポートされるとすぐにusersを参照しようとしますbind_formが、これは によってまだ「認識」されていませんforms。
これは私の設計上の欠陥ですか、それとも単純なものが欠けていますか? 設計上の欠陥の場合 - 改善のための提案を歓迎します。
** 制約:**
- モジュールには多くのフォームがあり
formsます。 usersモジュールには、検証フォームが添付された多くの関数があります。- 検証フォームは
users、 やその他のモジュールの多くの機能を使用します。
別の方法で説明します:
を。モジュールの 4 行目でformsimportusersforms
b. users.create_user参考文献forms.Create_User
c. モジュールの5行目で宣言されているため、まだforms知りませんCreate_Userforms