当用户使用django评论发帖时,我想对IP地址进行检查.
我可以轻松地覆盖和自定义django.comments使用的表单,但我需要访问请求对象以向其clean()添加IP测试.是否有可能以干净的方式访问它?
另一种方法是在接收保存信号时检查IP,但是中止保存的唯一方法似乎是向用户返回代码400.
解决方法:
评论框架提供了comment_will_be_posted信号:
http://docs.djangoproject.com/en/1.2/ref/contrib/comments/signals/#comment-will-be-posted
如果您注册此信号,您的处理程序将传递(尚未保存)注释对象和请求作为参数.如果您的处理程序返回False,则post_comment视图将使用CommentPostBadRequest进行回答,因为它会对失败的表单验证等任何其他类型的错误进行回答.