Как использовать разные представления для определенной базы URL при аутентификации? - PullRequest
0 голосов
/ 04 апреля 2019

Когда приходит запрос на /page-one url, я хотел бы использовать view_a, если пользователь аутентифицирован, и view_b для гостевых посетителей.

Код должен быть таким:

def dummy(request):
    if request.user.is_authenticated():
        print 'authuser' 
        return view_a(request) 
    else: 
        print 'unauth user'
        return view_b(request)

Как я могу добиться этого в Django?

Я смотрел на документы, но не мог найти соответствующие руководстваоб этом.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Вы можете использовать is_authenticated Используйте это в представлениях

if user.is_authenticated:
    return render(request, 'polls/detail.html', {'poll': p})
else:
    return render(request, 'polls/another-detail.html', {'poll': p})
1 голос
/ 04 апреля 2019

Для перенаправления в разные представления (не только для рендеринга разных шаблонов)

from django.urls import reverse
from django.http import HttpResponseRedirect

...

if user.is_authenticated:
    return HttpResponseRedirect(reverse('some_detail', kwargs={'pk': pk}))
else:
    return HttpResponseRedirect(reverse('another_detail', kwargs={'pk': pk}))

и в ваших URL вы должны будете "назвать" представление

path('another_detail/<int:pk>/', views.another_detail, name='another_detail'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...