【问题标题】:Django - allow url only to be accessed from a specific pageDjango - 只允许从特定页面访问 url
【发布时间】:2014-11-21 00:05:33
【问题描述】:

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

有没有办法确保访问 /data 的唯一方法是通过 /terms 上的同意按钮? IE。只需在地址栏中输入 /data 就会引发错误或重定向到术语。

以防万一,我不会存储用户(我使用的是会话数据)。

谢谢!

【问题讨论】:

    标签: django django-views django-urls


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的建议!这正是我所需要的。
    • 在调用第一个视图时在他们的会话上设置一个标志,然后在调用第二个(受保护的)视图后将其翻转回来是完美的。 ???
    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多