我正在尝试验证一种形式,例如,如果用户IP(request.META['REMOTE_ADDR'])在表BlockedIPs中,它将无法通过验证。但是我无法访问request中的Form变量。我该怎么做?谢谢。

最佳答案

通过覆盖__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)
# ...

关于django - Django表单验证中被禁止的IP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/560455/

10-16 22:34