Django 1.11.4 LOGIN_REDIRECT_URL不起作用

时间:2019-02-13 11:19:37

标签: django redirect login

我正在更改现有的Django应用。

MacOS OSX 10.13.6,Django 1.11.4和1.11.3

设置LOGIN_REDIRECT_URL显然无效。

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

文档指出:

  

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

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

对于旧版本的Django,似乎有一些关于该主题的SO主题,但它们没有帮助。

  • 设置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设置。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以这样;

from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...