0

我正在将 DjangoRatings 用于 Web 应用程序,该应用程序允许注册用户和非注册用户的匿名评分。在 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
4

0 回答 0