Django аутентификация: индекс для сотрудников и индекс для пользователей (2 шаблона)

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

Проблема: Я хочу при входе в систему перенаправлять user.is_staff прямо на этот путь /dashboard, вместо того, чтобы сначала идти в index.

Функции, которые, как мне кажется, нужно объединить: (views.py)

  1 @staff_member_required
  2 def staff_dashboard(request):
  3     users = User.objects.all()
  4     customer = Customer.objects.all()
  5     accounts = Account.objects.all()
  6     context = {
  7             'users': users,
  8             'customer': customer,
  9             'accounts': accounts
 10             }
 11     return render(request, 'bank_app/dashboard.html', context)
 12
 13
 14 @login_required
 15 def index(request):
 16     customer = Customer.objects.filter(user=request.user)
 17     accounts = Account.objects.filter(user=request.user)
 18     context = {
 19             'customer': customer,
 20             'accounts': accounts
 21             }
 22     return render(request, 'bank_app/index.html', context)

(urls.py:)

urlpatterns = [
         path('dashboard', views.staff_dashboard, name='staff_dashboard'),
         path('', views.index, name='index'),
         path('create', views.create, name='create'),
         path('createaccount', views.createaccount, name='createaccount'),
         path('details/<int:pk>', views.details, name='details'),
        ] 

Когда пользователь является_штатным, показывать "dashboard/" (dashboard.html), а не "" (index.html)

* У меня также есть шаблон расширения, показанный ниже, но это не помогло решить проблему:

 28    <p>Welcome {{ user }}</p>
 29
 30     {% if user.is_staff  %}
 31         {% block staffcontent  %}
 32         {% endblock %}
 33     {% else %}
 34         {% block content %}
 35         {% endblock %}
 36     {% endif %}
 37
 38       {% block footer %}
 39       {% endblock %}

попробуйте что-нибудь вроде этого.

@login_required
 def index(request):
      if request.user.is_superuser:
           return redirect('staff_dashboard')
      else:
          customer = Customer.objects.filter(user=request.user)
          accounts = Account.objects.filter(user=request.user)
          context = {
             'customer': customer,
            'accounts': accounts
             }

          return render(request, 'bank_app/index.html', context)

Чтобы проверить, является ли пользователь is_staff, вы можете сделать что-то вроде этого user.is_staff или user.is_superuser.
Дайте мне знать, если это работает.

Вернуться на верх