当用户无法正确登录时,Django框架可以轻松地处理重定向。但是,此重定向将转到单独的登录页面。我可以将模板设置为与我登录的页面相同,但新页面中没有其他对象。在
例如,我有一个首页,上面有一堆新闻文章。侧边栏上是一个登录表单。当用户登录,但无法进行身份验证时,我希望它返回到首页并保留显示的所有新闻文章。作为最新的新闻,没有一篇是最新的。在
我怎样才能解决这个问题?感谢任何帮助。在
编辑:请记住,我有正在显示的动态内容,我希望它仍然显示!此外,主页并不是用户唯一可以登录的地方。侧边栏永远不会改变,因此用户可以从站点上的任何页面登录,并且该页面上的所有内容仍然需要在登录失败时显示出来。在
这是因为重定向到视图会丢失最初用于呈现页面的原始上下文。在
你只缺少一个简单的逻辑。您正在尝试再次呈现相同的模板,但没有新闻文章列表。在
我想(首先),您通过发送两件事1来呈现显示文章和登录表单的模板。登录表单,和2。文章列表。 但是第二,当用户无法进行身份验证时,就不会再次传递相同的内容。将这些变量作为上下文再次传递(如果窗体不处理错误消息,也可以添加错误消息)。在
编辑:实际情况是,一个上下文用于呈现模板,它是该模板的全部责任,它希望在进一步的导航中传递什么。正如我所见,如果你不把某件事传得更远,你就得不到更远。在
如果您想要一些自动化的上下文,请开发您自己的上下文处理器,类似于auth-context-processor,它会自动添加“user”之类的内容,始终可用于模板。在
顺便说一句,你无论如何都会错过这种上下文,即使登录是经过身份验证的。因此,如果特定的上下文非常重要,可以尝试将文章的主键与登录表单submit一起发送,或者将其存储在global(有史以来最丑的东西)中,或者重新考虑并分离流(我觉得是好事)。在
是否要在登录失败时重定向到引用页?在
您可能需要检查引用页面url是否设置正确,否则将其设置为默认url(假设您的默认url命名为“index”)。在
<IFRAME>
来 调用登录视图所有回发 会在iframe中发生,所以 你的页面保持不变。如果 访问者登录成功,您 可以使用javascript重定向 指向其他URL的父页我个人更喜欢在单独的页面上登录。如果您只担心您的访问者丢失当前页面(而不是说,被一个挑剔的客户机绑定),那么您可以让登录显示在lightbox中。我过去使用过这三种方法,如果您感兴趣,我很乐意发布一些代码示例。在
相关问题 更多 >
编程相关推荐