我的 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)
]
謝謝!
uj5u.com熱心網友回復:
嘗試閱讀有關裝飾器的更多資訊:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/508735.html
