Django Forms clean()方法 - 需要客户端的IP地址

Kry*_*ski 3 forms django ip-address

我在Django表单上覆盖了clean()方法.我想访问客户端的IP地址(假设这是一个绑定的形式).如果我有一个对请求对象的引用,我可以从META("REMOTE_ADDR")轻松获取它.但是,我没有对请求的引用.

关于如何做到这一点的任何想法?

Dan*_*man 13

所以给自己一个参考.

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(MyModelForm, self).__init__(*args, **kwargs)


    def clean(self):
        ip_address = self.request['META']['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

在你看来:

myform = MyModelForm(request.POST, request=request)
Run Code Online (Sandbox Code Playgroud)

  • 这通常是一种很好的做法.例如,超类方法实际上不接受*args和**kwargs - 它可能只在其定义中有命名参数.如果是这样,传递意外的`request`参数将导致异常. (3认同)