首页 > 解决方案 > Django 设置 LOGIN_REDIRECT_URL 动态基于语言

问题描述

假设我有 LOGIN_REDIRECT_URL='/foo/bar/' 并且我在http://127.0.0.1/en/login/上并且我成功登录。我将被重定向到http://127.0.0.1/foo/bar/导致丢失语言前缀。为了维护 url 中的语言代码,我应该怎么做?当然,我希望所有其他语言代码都可以正常工作,并且默认的代码也一样:

http://127.0.0.1/en/login/ -> http://127.0.0.1/en/foo/bar/
http://127.0.0.1/login/ -> http://127.0.0.1/foo/bar/
http://127.0.0.1/ro/login/ -> http://127.0.0.1/ro/foo/bar/

标签: pythondjango

解决方案


假设您正在使用 Django auth 和LoginView框架中的 ,您可以参数化登录后重定向到的 URL。LOGIN_REDIRECT_URL当未指定时,它是一个后备。

LoginView属性称为nextnext可以使用上一页中的参数设置 url,例如?next=<your_url>. 只是不要忘记使用is_safe_url()from对其进行消毒django.utils.http


推荐阅读