我正在更改现有的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设置。
谢谢
答案 0 :(得分:0)
您可以这样;
from django.contrib.auth.decorators import login_required
@login_required(login_url='/accounts/login/')
def my_view(request):
...