Python 3.6/ Django1.10 @login_required 装饰器重定向到缺少“/”的 link
Python 3.6/ Django1.10 @login_required decorator redirects to link with missing "/"
我在我的项目 Django 1.10 上使用装饰器 login_required Python 3.6.It 重定向到“http://127.0.0.1:8000/accounts/login?next=/profile/”这个 link 但是抛出一个URL 错误。
而当我在登录后用这个“http://127.0.0.1:8000/accounts/login/?next=/profile/”link手动修改上面的link和“/”时,它工作正常。所以我认为这是 unicode“/”的问题,它在重定向时不会呈现。
。
如何在 "login" 之后渲染这个“/”?
确保您的 LOGIN_URL
设置包含尾部斜线:
LOGIN_URL = '/accounts/login/'
或者,您可以使用 url 模式名称。这样做的好处是您不必在设置中对登录名进行硬编码url。
LOGIN_URL = 'account_login'
如果您在使用 login_required
装饰器时指定 login_url
,则需要确保在此处包含尾部斜线。
@login_required(login_url='/accounts/login/')
def my_view(request):
...
我在我的项目 Django 1.10 上使用装饰器 login_required Python 3.6.It 重定向到“http://127.0.0.1:8000/accounts/login?next=/profile/”这个 link 但是抛出一个URL 错误。
而当我在登录后用这个“http://127.0.0.1:8000/accounts/login/?next=/profile/”link手动修改上面的link和“/”时,它工作正常。所以我认为这是 unicode“/”的问题,它在重定向时不会呈现。
如何在 "login" 之后渲染这个“/”?
确保您的 LOGIN_URL
设置包含尾部斜线:
LOGIN_URL = '/accounts/login/'
或者,您可以使用 url 模式名称。这样做的好处是您不必在设置中对登录名进行硬编码url。
LOGIN_URL = 'account_login'
如果您在使用 login_required
装饰器时指定 login_url
,则需要确保在此处包含尾部斜线。
@login_required(login_url='/accounts/login/')
def my_view(request):
...