使用django的python social auth通过社交媒体创建身份验证和注册。我已经定义了
LOGIN_ERROR_URL ='/ account / auth-failed /'
当出现问题时效果很好,它会正确地重定向。但是,我想在运行时有条件地指定LOGIN_ERROR_PAGE,因为我有一个scneario,它通过JSON或简单的HTML调用。
有关如何做到这一点的任何建议吗?
答案 0 :(得分:3)
实现起来并不是很简单,但您可以覆盖默认策略,并在自定义版本中覆盖get_setting()
方法,如下所示:
from django.conf import settings
from social.strategies.django_strategy import DjangoStrategy
class CustomDjangoStrategy(DjangoStrategy):
def get_setting(self, name):
if name == 'LOGIN_ERROR_URL' and self.request.is_ajax():
return '/auth/error/ajax'
else:
return getattr(settings, name)
将其放入模块并在您的设置中定义SOCIAL_AUTH_STRATEGY = app.module.CustomDjangoStrategy
。