Как перенаправить пользователя и администратора на другой шаблон после входа в Django 2 - PullRequest
0 голосов
/ 02 октября 2018

Я новичок в Django 2. Я пытаюсь разработать проект, в котором мои требования относятся к одной и той же странице входа пользователь и admin могут войти в систему, но при входе пользователя он будетпросмотреть свою собственную панель инструментов , и администратор увидит свою собственную панель инструментов .

Мой код views.py -

def loginCheck(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        admin = authenticate(request, is_staff=1, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        elif admin is not None:
            login(request, user)
            return redirect('admin')
        else:
            messages.add_message(request, messages.INFO, 'Wrong User Name Or Password')
            return redirect('loginView')
    messages.add_message(request, messages.INFO, 'You Have To Login First')
    return redirect('loginView')

Я пыталсяполучите is_staff значение для аутентификации администратора и пользователя, но не получите успеха.Теперь, как я могу войти в систему из одной формы входа и предоставить пользователю и администратору другую панель управления?

1 Ответ

0 голосов
/ 02 октября 2018

В приведенном выше коде вы дважды аутентифицируете одного пользователя, что является плохой практикой.по вашему требованию мы можем сделать как ниже.

def loginCheck(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user and user.is_staff is False:
            login(request, user)
            return redirect('home')
        elif user and user.is_staff is True:
            login(request, user)
            return redirect('admin')
        else:
            messages.add_message(request, messages.INFO, 'Wrong User Name Or Password')
            return redirect('loginView')
    messages.add_message(request, messages.INFO, 'You Have To Login First')
    return redirect('loginView')
...