验证django.contrib.comments表单时如何访问请求对象?

时间:2010-10-08 06:58:46

标签: python django comments

当用户使用django评论发帖时,我想对IP地址进行检查。

我可以轻松覆盖和自定义django.comments使用的表单,但我需要访问请求对象以向其clean()添加IP测试。是否有可能以干净的方式访问它?

另一种方法是在收到保存信号时检查IP,但是中止保存的唯一方法似乎是向用户返回代码400。

3 个答案:

答案 0 :(得分:1)

评论框架提供comment_will_be_posted信号: http://docs.djangoproject.com/en/1.2/ref/contrib/comments/signals/#comment-will-be-posted

如果您注册此信号,您​​的处理程序将传递(尚未保存)注释对象和请求作为参数。如果您的处理程序返回False,post_comment视图会回复CommentPostBadRequest,就像其他任何类型的错误一样,例如失败的表单验证。

答案 1 :(得分:0)

一种可能的方法,但在此级别的验证中仍然没有请求对象...

class SomeForm(forms.ModelForm):
    somefield = forms.CharField(...)

    def check_somefield(self):
        somefield = self.cleaned_data['somefield']
        ...  #do what you want
    return somefield

希望这可以提供帮助,或者我不明白你想要什么。

答案 2 :(得分:0)