Django перенаправляет на другой вид/страницу при отказе в разрешении
Hej!
У меня есть представление, в котором отображаются контактные данные. Цель состоит в том, чтобы некоторые пользователи могли видеть все детали ('A'), а некоторые - только имя ('B'). Поэтому у меня есть два сериализатора в моей модели и два представления (по одному для каждого сериализатора). Пользователи разделены на две группы
 @user_passes_test действительно работает, поэтому только те, кто входит в группу 'A', могут попасть в представление с деталями.
Я хочу, чтобы те, которые находятся в группе 'B', автоматически перенаправлялись на вид/страницу, где детали свернуты.
Есть идеи, как этого добиться?
У меня есть:
# views.py
def contacts_check(user):
   return user.groups.filter(name="Contacts = True").exists()
@login_required
@user_passes_test(contacts_check)
def contacts(request):
   .
   .
   .
@login_required
def contacts_small(request):
   .
   .
   .
# urls.py
app_name = "app"
urlpatterns = [
    path("contacts", contacts, name="contacts"),
    path("contacts2", contacts_small, name='contacts2')
]
Я пытался:
@user_passes_test(contacts_check, login_url='contacts')
но обе группы пользователей направляются на url 'contacts' с полным просмотром. ('B' получает ошибку, что у пользователя нет доступа). То же самое, когда login_url='contacts2'.
Я также пробовал:
def sees_contacts(self):
   if str(self.user.groups.filter) == 'Contacts = True':
       return True
   else:
       return False
con_login_required = user_passes_test(lambda u: True if u.sees_individuals else False, login_url='individuals2')
def contacts_login_required(view_func):
   decorated_view_func = login_required(con_login_required(view_func), login_url='contacts2')
   return decorated_view_func
У кого-нибудь есть идеи, что я делаю неправильно?
В urls.py просто используйте один путь
path("contacts/", contacts_view, name="contacts-view"),
then in the method
def contacts_view(request):
    if sees_contacts():
        return contacts(request)
    return contacts_small(request)
Это поможет сохранить шаблоны url менее запутанными для вас и пользователей и позволит вам легко разделять представления.