【问题标题】:Connecting two views in Django在 Django 中连接两个视图
【发布时间】:2013-01-11 22:55:18
【问题描述】:

我想确保我的访问者(未经过身份验证的用户)在不直接来自“先前视图”的情况下无法访问特定视图。我不得不手动创建表单预览和确认状态。这是提交和预览之间的步骤,以及预览和确认我想“保护”。

表单提交视图 -> 预览视图 -> 确认视图。

有什么方法可以让我创建一个唯一的哈希,发布它,然后检查它是否正确,或者生成一个 cookie、会话——或者其他任何感觉很聪明的东西?

我是 Django 初学者(一般来说是编程初学者),非常感谢任何 sn-ps' 或指出我正确方向的人!

谢谢。

【问题讨论】:

  • 听起来您应该看看 FormWizard 视图。只是一个提示! :)
  • 我试过了,但它不支持图片上传:((我在这个过程中很晚才发现)
  • 好吧,您应该在问题中包含该标准,但也许创建一个 cookie 会为您做到这一点? docs.djangoproject.com/en/dev/topics/http/sessions/…

标签: django forms hash django-views preview


【解决方案1】:

我能想到的至少有两种方法可以做到这一点:

一种方法是在您的表单或查询字符串值中包含一个隐藏字段,其中包含您想要在下一个视图中获取的哈希/唯一值。如果不存在或不正确,请重定向。

另一种方法是检查 request.META 中的引用 url 以查看它们是否来自您希望它们首先进入的视图,并从表单提交中保存会话值以执行其余部分观点。如果不存在,请重定向。如果引用 URL 不是您所期望的,请重定向。

无论您使用 cookie、会话、查询字符串参数还是隐藏表单帖子,它们都在做同样的事情 - 验证值是否存在。无论哪种方法效果最好,对于您作为该应用程序的开发人员和最有可能的维护人员来说最有意义的方法。

【讨论】:

    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2016-06-10
    • 1970-01-01
    • 2018-11-08
    • 2012-09-03
    • 2017-09-28
    相关资源
    最近更新 更多