bind_form
指定された django フォームを関数に割り当てるカスタム デコレータがあります。このデコレーターを使用すると、関数の引数に対して検証を「自動的に」実行できます。たとえば、age
必要な範囲内にあるかどうかを確認したり、ユーザーが存在することを確認したりします。これは DRY の理由で行われます。
デコレーターで参照される各フォームは、forms
モジュール内に存在します。
このフォーム検証の例としては、次のようなものがあります。users.check_user_exists
したがって、users
モジュールをモジュールにインポートする必要がありform
ます。
これで、モジュールforms
をインポートして参照できるようになりましたが、モジュールをインポートしてフォームをフォーム デコレータで使用できるようになりました。users
users.user_exists
users
forms
フォーム.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 行目でforms
importusers
forms
b. users.create_user
参考文献forms.Create_User
c. モジュールの5行目で宣言されているため、まだforms
知りませんCreate_User
forms