我正在django-allauth
为我的项目使用,我正在尝试使用自定义适配器settings.LOGIN_REDIRECT_URL
在登录后重定向用户之前做一些工作,相关代码:
from allauth.account.adapter import DefaultAccountAdapter
from django.conf import settings
class DispersionAccountAdapter(DefaultAccountAdapter):
def get_login_redirect_url(self, request):
""" Retorna la URL por defecto para redirecciónar,
esta lo hace formateando la cadena con el nombre del usuario.
"""
if request.user.is_authenticated():
return settings.LOGIN_REDIRECT_URL.format(
username=request.user.username)
else:
return "/"
因此,我按照文档说明对我的 settings.py 进行了更改:
LOGIN_REDIRECT_URL = "/{username}/all"
ADAPTER = "dispersion.apps.adapter.DispersionAccountAdapter"
ACCOUNT_ADAPTER = "dispersion.apps.adapter.DispersionAccountAdapter"
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
LOGIN_URL = "/main/login"
因此,当我运行服务器并尝试登录时,我被重定向到http://127.0.0.1:8000/{username}/all
而不是http://127.0.0.1:8000/jorge/all
(如果那是我的用户名)。我不确定我的设置有什么问题。我尝试了以下没有任何问题:
$ python2 manage.py shell
In [1]: from dispersion.apps.adapter import DispersionAccountAdapter
In [2]: adapter = DispersionAccountAdapter()
非常感谢任何建议或修复!:D