【问题标题】:Django Forms clean() method - need IP address of clientDjango Forms clean() 方法 - 需要客户端的 IP 地址
【发布时间】:2009-09-13 19:16:00
【问题描述】:

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

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

【问题讨论】:

    标签: django forms ip-address


    【解决方案1】:

    所以给自己一个参考。

    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']
    

    在你看来:

    myform = MyModelForm(request.POST, request=request)
    

    【讨论】:

    • 为什么要 pop() 呢?是为了清洁(比如扔掉你不使用的东西)吗?或者,它是否比 get() 更有效。
    • 这通常是一种很好的做法。例如,超类方法实际上可能不接受 *args 和 **kwargs - 它可能仅在其定义中具有命名参数。如果是这样,传递意外的request 参数将导致异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2021-01-23
    • 2011-10-04
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多