您的位置:

最佳方案处理django ValueError("Redirection loop for authenticated user detected. Check that ""your LOGIN_REDIRECT_URL doesn't point to a login page.")

  发布时间:2023-03-21 09:18:22
报错的原因这个错误通常是由于你在 Django 的设置中设置了一个登录页面 URL 作为而在登录页面上尝试重定向到登录页面时发生的。如何解决可以在 Django 的设置中将设置为一个合法的非登录页面 URL。如果你不知道应该将设置为什么 URL,可以在 Django 的视图函数中使用 `reverse` 函数获取 URL。例如这样,当你更改了你的 URLconf 并且重命名了 'home' URL 时也会相应地更新。这样,你的 Django 项目的基本 URL 将被添加到相对 URL 前面,然后将用户重定向到结果 URL。

报错的原因

这个错误通常是由于你在 Django 的设置中设置了一个登录页面 URL 作为 `LOGIN_REDIRECT_URL`,而在登录页面上尝试重定向到登录页面时发生的。

具体来说,如果用户尝试访问一个只有登录用户才能访问的页面,Django 会将用户重定向到登录页面。如果你将登录页面 URL 设置为 `LOGIN_REDIRECT_URL`,那么在用户成功登录后,Django 就会尝试将其重定向回登录页面,而这就会导致无限重定向循环。

为了解决这个问题,你需要在 Django 的设置中将 `LOGIN_REDIRECT_URL` 设置为一个合法的非登录页面 URL。

如何解决

可以在 Django 的设置中将 `LOGIN_REDIRECT_URL` 设置为一个合法的非登录页面 URL。例如,你可以将其设置为 '/home/' 或 '/dashboard/',这样在用户成功登录后就会重定向到这些 URL。

如果你不知道应该将 `LOGIN_REDIRECT_URL` 设置为什么 URL,可以在 Django 的视图函数中使用 `reverse` 函数获取 URL。例如:


from django.shortcuts import reverse

LOGIN_REDIRECT_URL = reverse('home')

这样,当你更改了你的 URLconf 并且重命名了 'home' URL 时,`LOGIN_REDIRECT_URL` 也会相应地更新。

你还可以使用 `LOGIN_REDIRECT_URL` 设置一个相对 URL,例如 '/home/' 或 '/dashboard/'。这样,你的 Django 项目的基本 URL 将被添加到相对 URL 前面,然后将用户重定向到结果 URL。

使用例子

下面是一个使用 `reverse` 函数将 `LOGIN_REDIRECT_URL` 设置为名为 'home' 的 URL 的例子:


from django.shortcuts import reverse

LOGIN_REDIRECT_URL = reverse('home')

下面是一个使用相对 URL 将 `LOGIN_REDIRECT_URL` 设置为 '/home/' 的例子:


LOGIN_REDIRECT_URL = '/home/'

在这两种情况下,当用户成功登录后,都会将其重定向到 '/home/' URL。

请注意,在这两种情况下,'home' 和 '/home/' 均为示例 URL。你需要根据你的项目来设置合适的 URL。