8

request.META['REMOTE_ADDR']ユーザー ( ) の IP がテーブルにある場合、検証に失敗するように、フォームを検証しようとしていますBlockedIPsrequestただし、の変数にアクセスできませんForm。どうすればいいのですか?ありがとう。

4

1 に答える 1

9

オーバーライドしてフォームで使用__init__できるようにして、構築中に渡すことができるようにします (または、IP 自体を渡すこともできます)。

from django import forms

class YourForm(forms.Form)
    # fields...

    def __init__(self, request, *args, **kwargs):
        self.request = request
        super(YourForm, self).__init__(*args, **kwargs)

    # validation methods...

フォームを初期化するときにオブジェクトを最初の引数として渡すだけrequestで、カスタム検証メソッドは次の方法でオブジェクトにアクセスできますself.request

if request.method == 'POST':
    form = YourForm(request, request.POST)
    # ...
else:
    form = YourForm(request)
# ...
于 2009-02-18T10:22:58.280 に答える