Отображение для конкретной группы пользователей в Django 4

Никак не могу понять, как в Django реализовать свою панель управления для каждой группы пользователей.

Делаю dashboard для сайта. Есть 4 группы пользователей

  • admin
  • moderator
  • operator
  • clien

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

И я вообще не представляю, как ограничить этот функционал.

Т.е. Нужно, чтобы при авторизации пользователя из группы operator, выводился только этот шаблон, и адрес сайта был типа www.адрессайта.ру/index.html

и так, для каждой группы

Помогите, пожалуйста. Пол интернета перерыл, ничего похожего найти не могу. 2 дня убил на поиски и чтение документации, но ничего не понял..

Что есть:

def login_view(request):
    form = LoginForm(request.POST or None)

    msg = None

    if request.method == "POST":

        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = authenticate(username=username, password=password)
            if user.groups.filter(name='Администратор').count():
                login(request, user)
                return redirect("/")
            if user.groups.filter(name='Оператор').count():
                login(request, user)
                return redirect("/operator.html")
            else:
                msg = 'Логин или пароль - не верны'
        else:
            msg = 'Ошибка при проверке формы'

    return render(request, "accounts/login.html", {"form": form, "msg": msg})

Эта статья станет отправной точкой для понимания:

В Django существуют permissions в django.contrib.auth.mixins

from django.contrib.auth.mixins import PermissionRequiredMixin


class CreatePostView(PermissionRequiredMixin, CreateView):
    permission_required = 'blog.add_post'
    model = Post
    fields = ('name', 'content')
Вернуться на верх