Python 3.6 / Django1.10 @login_required装饰器重定向到缺少“/”的链接

时间:2017-06-15 15:24:08

标签: python django python-3.6 django-1.10

我在我的项目Django 1.10 Python 3.6上使用装饰器login_required。它重定向到“http://127.0.0.1:8000/accounts/login?next=/profile/”此链接但引发了URL错误。
而当我在登录后使用“/ {”手动修改上述链接时,它可以正常工作。所以我认为这是一个unicode“/”的问题,在重定向时不会被渲染。

ScreenShot of the error report

如何在“登录”后呈现此“/”?

1 个答案:

答案 0 :(得分:2)

确保您的LOGIN_URL设置包含尾部斜杠:

LOGIN_URL = '/accounts/login/'

或者,您可以使用网址格式名称。这样做的好处是您无需在设置中对登录网址进行硬编码。

LOGIN_URL = 'account_login'

如果您在使用login_url装饰器时指定login_required,则需要确保在那里包含尾部斜杠。

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