1. ホーム
  2. python

[解決済み] フォームの clean() メソッドで、リクエストオブジェクトやその他の変数にアクセスするにはどうすればよいですか?

2022-11-07 19:11:56

質問

フォームのクリーンメソッドにrequest.userを使用しようとしていますが、どのようにrequestオブジェクトにアクセスすればよいのでしょうか?変数の入力を許可するためにクリーンメソッドを修正することはできますか?

どのように解決するのですか?

Ber による回答 - スレッドローカルに格納する - は、非常に悪い考えです。この方法で行う理由はまったくありません。

もっと良い方法は、フォームの __init__ メソッドをオーバーライドして、追加のキーワード引数を取ることです。 request . これにより、リクエストは フォーム に保存されます。そして、そこからクリーンメソッドにアクセスすることができます。

class MyForm(forms.Form):

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(MyForm, self).__init__(*args, **kwargs)


    def clean(self):
        ... access the request object via self.request ...

と表示され、あなたのビューに

myform = MyForm(request.POST, request=request)