我有一个表格供用户填写<主页> / data。 但是,我希望用户只有在同意某些条款时才能访问该表单,该条款位于<主页> /条款。
有没有办法确保访问的唯一方法< home> / data来自同意按钮<主页> /条款?即只需输入< home> / data to the address bar应该抛出错误或重定向到术语。
如果重要,我不会存储用户(我正在使用会话数据)。
谢谢!
答案 0 :(得分:2)
您可以使用referer
标题(request.META['HTTP_REFERER']
)来确定用户来自哪个页面。如果您的视图不存在/重定向回您的条款页面,则您的视图可以阅读此标题并拒绝访问。
对于更可靠的内容,如果您已经在使用会话数据,则可以在用户点击"同意"条款页面上的按钮。也许这是一个表单POST,你在他们同意的会话中设置一个标志,并且视图重定向到/ data页面。
在/ data视图中,如果在会话中未检测到此标记,则可以重定向回术语页面。