2014-02-03 3 views
0

Я использую python social auth с django для создания аутентификации и регистрации через социальные сети. Я определилpython social auth перенаправить на страницу с ошибкой условно

LOGIN_ERROR_URL = '/ счет/Auth-не удалось /'

это работает хорошо, когда есть проблема, было бы переориентировать там правильно. Тем не менее, я хочу условно указать LOGIN_ERROR_PAGE во время выполнения, потому что у меня есть scneario, где он вызывается через JSON или простой HTML.

Любое предложение о том, как это сделать?

ответ

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 в настройках.

Смежные вопросы