Django 1.11.4 LOGIN_REDIRECT_URL不起作用

问题描述 投票:0回答:1

我正在更改现有的Django应用程序..

MacOS OSX 10.13.6,Django 1.11.4和1.11.3

设置LOGIN_REDIRECT_URL显然没有效果。

我以管理员身份登录。我想要的是在用户登录后转到特定页面(而不是使用模型链接的管理界面)。 LOGIN_REDIRECT_URL似乎被忽略了。即使我将其设置为虚假,也没有错误,我最终在管理页面上显示了模型的链接。也许我只是不理解有关其功能的文档。

文件指出:

当contrib.auth.login视图没有下一个参数时,登录后重定向请求的URL

在浏览器检查工具的POST请求中,我看到“next = / login /”,我不知道这是不是坏了以及如何摆脱它。

对于旧版本的Django,似乎有几个关于主题的线程,他们没有帮助。

  • 设置USE_X_FORWARDED_HOST = True不会改变行为
  • 设置APPEND_SLASH = True不会改变行为
  • urlpatterns列表中删除“登录”匹配条目不会更改行为。
  • url(r'myapp/admin/',myview)添加到urlpatterns也没有任何影响。
  • LOGIN_REDIRECT_URL中对setting.py设置或在urls.py中手动将正斜面添加斜线和/或预先设置斜线无效。还尝试从正则表达式中的插入符号开始

代码:

settings.py

LOGIN_URL = '/admin/login/'
LOGIN_REDIRECT_URL = 'myapp/myview' 

urls.py

urlpatterns = [
    # this works if clicked from the Menu on admin screen
    # , but I would like this url to be used also as default landing page after the user logs in 
    url(r'^myapp/myview', myview),         
    # this being present or removed makes no difference
    url(r'login', admin.site.urls, name="Login"),
    # probably useless 
    url(r'myapp/admin/',myview),
    .....
    .....
]

我在不同的子目录中有几个views.py,它们都是导入的。其中一个包含

@login_required
def myview(request):
  # my code

从菜单中单击其链接时,它工作正常,即url模式r'^myapp/myview'匹配和视图加载。这让我觉得在登录操作后完全忽略了LOGIN_REDIRECT_URL设置。

谢谢

django redirect login
1个回答
0
投票

你可以这样;

from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...
© www.soinside.com 2019 - 2024. All rights reserved.