Django - 只允许从特定页面访问 url

pom*_*ate 2 django django-urls django-views

我有一个表单供用户填写 <home>/data。但是,我希望用户只有在同意位于 < home >/terms 的某些条款时才能访问该表单。

有没有办法确保访问 <home>/data 的唯一方法是从 <home>/terms 上的同意按钮?即在地址栏中输入 <home>/data 应该会抛出错误或重定向到条款。

万一重要,我不存储用户(我使用会话数据)。

谢谢!

Yuj*_*ita 5

您可以使用referer标题 ( request.META['HTTP_REFERER']) 来确定用户来自哪个页面。如果它不存在,您的视图可以读取此标题并拒绝访问/重定向回您的条款页面。

为了更可靠一些,如果您已经在使用会话数据,您可以在用户单击条款页面上的“同意”按钮时在会话中存储一个标志。也许这是一个表单 POST,你在他们同意的会话中设置一个标志,然后视图重定向到 /data 页面。

在 /data 视图上,如果在会话中未检测到此标志,您可以重定向回条款页面。