我正在尝试验证表单,以便如果用户的IP(request.META['REMOTE_ADDR']
)位于表BlockedIPs
中,则验证失败。但是,我无法访问request
中的Form
变量。我该怎么做?感谢。
答案 0 :(得分: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)
# ...