簡體   English   中英

Django 重定向所有頁面

[英]Django Redirect for All Pages

我的 Django 項目中有多個頁面。

這是我的 urls.py

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

我想添加一個適用於所有頁面的重定向,以便未經身份驗證的用戶將被重定向到 MSOAuth2。

這是我的意見.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?') 

我需要使用什么正則表達式或 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?'

在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM