Django Перенаправление для всех страниц

У меня есть несколько страниц в моем проекте Django.

Вот мой urls.py

urlpatterns = [
    path('page1', views.page1),
    path('page2', views.page2),   
    path('page3', views.page3),  
]

Я хочу добавить перенаправление, применяемое ко всем страницам, чтобы пользователи, не прошедшие аутентификацию, перенаправлялись на MSOAuth2.

Вот мой views.py

def page1(request):
    return render(request, "page1.html")
 
def page2(request):
    return render(request, "page2.html")

def page3(request):
    return render(request, "page3.html")

def MS_OAuth2(request):
    if not request.user.is_authenticated:
        return redirect('https://login.microsoftonline.com/tenant/oauth2/v2.0/authorize?') 

Какой regex или шаблон url мне нужно использовать, чтобы все мои страницы перенаправлялись на views.MS_OAuth2?

Вот что у меня есть на данный момент, но это не работает. Я хочу, чтобы перенаправление применялось ко всем страницам моего сайта.

urlpatterns = [
    path('page1', views.page1),
    path('page2', views.page2),   
    path('page3', views.page3),  
    path(r'^$', views.MS_OAuth2)
]

Спасибо!

Попробуйте прочитать больше о декораторах:

loogin_required декоратор: https://docs.djangoproject.com/en/4.1/topics/auth/default/#the-login-required-decorator

user_passes_test декоратор: https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

и, конечно, попробуйте почитать о Django-GCBV, это всегда лучше, чем функции. https://docs.djangoproject.com/en/4.1/topics/class-based-views/

и

permission_required декоратор: https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.decorators.permission_required

В вашем случае:

# in settings.py:
LOGIN_URL = 'https://login.microsoftonline.com/tenant/oauth2/v2.0/authorize?'

and in urls.py:

from django.colntrib.auth.decorators import login_required

urlpatterns = [
    path('page1', login_required(views.page1)),
    path('page2', login_required(views.page2)),   
    path('page3', login_required(views.page3))
]

или, если вы не хотите менять urls.py:

#views.py
from django.colntrib.auth.decorators import login_required

@login_required
def page1(request):
    return render(request, "page1.html")
 
@login_required
def page2(request):
    return render(request, "page2.html")

@login_required
def page3(request):
    return render(request, "page3.html")

...  # your staff here
Вернуться на верх