当用户使用django评论发帖时,我想对IP地址进行检查。
我可以轻松覆盖和自定义django.comments使用的表单,但我需要访问请求对象以向其clean()添加IP测试。是否有可能以干净的方式访问它?
另一种方法是在收到保存信号时检查IP,但是中止保存的唯一方法似乎是向用户返回代码400。
答案 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)