Django LoginView 的success_url?

Posted

技术标签:

【中文标题】Django LoginView 的success_url?【英文标题】:success_url for Django LoginView? 【发布时间】:2018-10-30 14:35:06 【问题描述】:

高级问题:我可以使用success_url 属性更改从Django 的LoginView 继承的视图将重定向到哪里吗?

我有一个如下所示的登录视图(忽略导入语句):

class MyLoginView(LoginView):
    template_name = 'myapp/mytemplate.html'
    success_url = reverse_lazy('myapp:my_success_view')

但是,我的登录视图仍然从我的 settings.py 重定向到我的 LOGIN_REDIRECT_URL。这是在视图中更改我的重定向 url 的错误方法吗?

编辑由于部分问题可能出在模板上,因此我将模板的提交按钮部分包括在内。这是考虑到 Mehdi 的回答后的样子(行为没有改变)。

        <div class="d-flex justify-content-center mt-4" style="width: 100%">   
            <button type="submit" class="btn btn-primary" style="width: 100%">
                Log In
            </button>
        </div>
        <input name="next" type="hidden" value="% url 'myapp:mytemplatename' %"/>

【问题讨论】:

【参考方案1】:

在您的模板中,您应该使用这样的下一个输入:

&lt;input name="next" type="hidden" value="% url 'success_view' %&gt;

您可以使用视图的redirect_field_name 属性自定义其名称。请参阅课程文档here。

【讨论】:

这可以放在模板中表单标签的任何地方吗? 当然,如果您愿意,我发布的链接中有一个示例。 酷,我将它添加到模板中,但它似乎仍然无法正常工作。我会考虑一下,但是如果您知道为什么在模板中包含它不会改变真正有用的行为的任何明显原因 想不出任何明显的东西。 url 标签是否呈现预期值,是否在您的视图中收到? 是的,看起来 url 标记呈现了预期值,但重定向仍然会转到我在 settings.py 中的 LOGIN_REDIRECT_URL 中设置的 url。下一个参数方法是否会覆盖 LOGIN_REDIRECT_URL?

以上是关于Django LoginView 的success_url?的主要内容,如果未能解决你的问题,请参考以下文章

Django - 使用 LoginView 的正确方法

AttributeError:模块'django.contrib.auth.views'没有属性'LoginView'

Django写的LoginView,登录成功后无法跳转回原页面,求助

django中的自定义登录URL

Django REST EmailAddress 匹配查询不存在

django的用户登录基础函数