我正在使用DjangoRatings作为一个网络应用程序,它允许注册和非注册用户的匿名评级。在DjangoRatings settings.py文件中设置IPLimit整数后,一切正常;但是,当我超过每个IP允许的投票数时,整个网页会重新加载“RaiseIPLimit()”错误,并且整个网站都会关闭,这需要通过后退按钮重新加载上一页。我的问题是,我可以添加到我的views.py文件中告诉django当DjangoRatings传递RaiseIPLimit()错误时,只需打印一些类似“你只能投票一次!”的消息给用户并将加载的网页保留为它不是崩溃整个网站。
如果除了DjangoRatings之外还有一种更简单的方法来进行这种通用的IP检查,我愿意采用其他方式,但DjangoRatings似乎比其他任何东西都容易得多,因为我唯一需要IP限制的是评级。为了更清楚,这是DjangoRatings给我的确切错误:
IPLimitReached at /myapp/rating /page1
这直接来自DjangoRatings源代码:
num_votes = Vote.objects.filter(
content_type=kwargs['content_type'],
object_id=kwargs['object_id'],
key=kwargs['key'],
ip_address=ip_address,
).count()
if num_votes >= getattr(settings, 'RATINGS_VOTES_PER_IP', RATINGS_VOTES_PER_IP):
raise IPLimitReached() ...
kwargs.update(defaults)
if use_cookies:
# record with specified cookie was not found ...
cookie = defaults['cookie'] # ... thus we need to replace old cookie (if presented) with new one
kwargs.pop('cookie__isnull', '') # ... and remove 'cookie__isnull' (if presented) from .create()'s **kwargs
rating, created = Vote.objects.create(**kwargs), True