【问题标题】:Banned IPs in Django form validationDjango 表单验证中的禁止 IP
【发布时间】:2010-10-08 07:25:28
【问题描述】:

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

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2014-11-15
      • 1970-01-01
      • 2015-07-17
      • 2017-06-08
      • 1970-01-01
      • 2018-11-05
      • 2019-03-11
      • 1970-01-01
      相关资源
      最近更新 更多