【发布时间】:2010-10-08 07:25:28
【问题描述】:
我正在尝试验证一个表单,如果用户 (request.META['REMOTE_ADDR']) 的 IP 在表 BlockedIPs 中,它将无法通过验证。但是我无权访问Form 中的request 变量。我该怎么做?谢谢。
【问题讨论】:
标签: django django-forms
我正在尝试验证一个表单,如果用户 (request.META['REMOTE_ADDR']) 的 IP 在表 BlockedIPs 中,它将无法通过验证。但是我无权访问Form 中的request 变量。我该怎么做?谢谢。
【问题讨论】:
标签: django django-forms
通过覆盖 __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)
# ...
【讨论】: