2016-03-15 2 views
1

, когда пользователь входит в систему, проверить, если он принадлежит к определенной группе, если это правда, я переадресацию на определенную страницу, вот мой код apps.py:Джанго сигналы перенаправления

def OperatorRedirect(sender, user, request, **kwargs): 
    from struttura_employee.models import EmployeeUser, EmployeeGroup 

    u = get_object_or_404(EmployeeUser,username=user.username) 
    groups = u.get_groups() 
    g = get_object_or_404(EmployeeGroup,long_name="Operatore") 
    if g in groups: 
     print("sei un operatore") 
     return HttpResponseRedirect(reverse('qrs_machine_panel:asset_choice', args=[])) 

class QrsofmanMachinePanelConfig(AppConfig): 
    name = 'qrsofman_machine_panel' 
    print("ciao") 
    user_logged_in.connect(OperatorRedirect) 

проблема в том, что HttpResponseRedirect игнорируется любые идеи?

ответ

5

Это не то, что вы можете сделать в сигнале. Это касается таких вещей, как обновление строки базы данных или отправка электронной почты, когда происходит определенное действие. Они никак не могут повлиять на ответ, потому что это контролируется точкой зрения.

Ваш код перенаправления должен быть перемещен в режим входа в систему; просто сделайте проверку после того, как вы позвоните auth.login().

+0

В дополнение к тому, что упоминает Даниил, вы также должны использовать ['user_passes_test'] (https://docs.djangoproject.com/en/1.9/topics/auth/default/#limiting-access-to-logged- in-users-that-pass-a-test) в вашем браузере; иначе пользователи могут просто ввести URL-адрес ограниченного представления. –

+0

Спасибо, что ответ! – Skar3

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