我正在将现有的Django项目迁移到使用wagtail CMS。在迁移过程中,我发现对于如何在wagtail中实现速率限制感到困惑,因为文档中并未提及相关内容。
之前未集成wagtail时,我有一个视图用于返回隐私政策的HTML页面,并使用redis对它进行了速率限制,如下所示:
@ratelimit(
key='ip',
rate='15/m',
block=True
)
def show_privacy_policy(request):
context = base_context(request)
return render(
request,
'pages/privacy_policy.html',
context
)
现在,这个视图已经被移除,取而代之的是一个更通用的wagtail页面模型,我称之为InfoPage
。这个模型仅定义了一个模板路径wagtail/info_page.html
。
class InfoPage(Page):
template = "wagtail/info_page.html"
last_modified_date = models.DateField("最后修改日期")
body = RichTextField(features=['bold', 'italic', 'link', 'ul', 'h3'])
content_panels = Page.content_panels + [
FieldPanel('last_modified_date'),
FieldPanel('body')
]
parent_page_types = ['news.Index']
subpage_types = []
现在所有InfoPage
页面都能正确地渲染出来,但我看不到任何方式来对这些页面进行访问速率限制。如果没有速率限制的功能,我的应用就容易受到DDoS攻击等风险。我是不是遗漏了什么?请问在wagtail中是否存在某种方法来实现速率限制,还是我需要采取另一种不同的方法呢?