【发布时间】:2013-01-29 03:13:37
【问题描述】:
我在我的项目中使用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
【问题讨论】:
-
您使用的是哪个版本的
allauth?只有最新的开发版本支持get_login_redirect_url。 -
先生,我正在使用您的
0.8.3版本!使用那个版本是不是我做错了什么?
标签: python django adapter django-allauth