Django перенаправлять пользователей на основе группы при входе в систему - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь перенаправить пользователей в определенной группе на определенный шаблон, а тех, кто не входит в него, - на панель управления при входе в систему. То, что я сделал в настоящее время, продолжает вызывать HTTP-ответ для пользователей, не входящих в группу, всякий раз, когда я пытаюсь войти в систему с пользователем в группе.

from django.shortcuts import render
from django.contrib.auth import login, authenticate, logout
from .forms import SignUpForm
from django.shortcuts import render, redirect
from .models import Profile
from .decorators import allowed_users
from django.contrib import messages
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required
# Create your views here.
def homepage(request):
    return render(request, 'core/frontpage.html')

def login_user(request):
    if request.method == 'POST':
        username = request.POST.get('Username')
        password = request.POST.get('Password')
        user = authenticate(username=username, password=password)
        print(username,password,user)
        if user is None:
            messages.success(request, 'Username or Password is incorrect')
            return redirect('login')
        else:
            group = None
            if request.user.groups.exists():
                group = request.user.groups.all()[0].name
            if group == 'Hospitals':
                
                return redirect('core/hospital.html')
            else:
                return HttpResponse('You are not authorised to access this page')

            login(request, user)

            return redirect('dashboard')

1 Ответ

0 голосов
/ 02 августа 2020

На самом деле вы, как никогда, не авторизуете пользователя. Я думаю, вы хотите, чтобы это было примерно так:

  ...
        else:
            login(request, user)
            group = None
            if user.groups.exists():
                group = user.groups.all()[0].name
            if group == 'Hospitals':
                return redirect('core/hospital.html')
            return redirect('dashboard')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...