我的 django 應用程式中有一個需要身份驗證的頁面。如果用戶點擊mydomian/my_page視圖將評估請求是否通過身份驗證。如果通過身份驗證,請求將被路由到正確的 html 頁面 ( my_page.html)。如果請求未經身份驗證,請求將通過重定向路由到登錄頁面:
class MyView(View):
def get(self, request):
user = request.user
context = {
'username': user.username
}
if user.is_authenticated and user.is_staff:
return render(request,
'path/to/my_page.html',
context)
logout(request)
return redirect('/admin/login?next=/my_page')
這作業得很好,當未經身份驗證的用戶點擊時mydomain/my_page,它將被路由到mydomain/admin/login/?next=/my_page,一旦通過身份驗證,它將被路由到mydomain/my_pagewith will serve path/to/my_page.html。
現在我更新到最新的 django 版本并且重新路由發生了變化:當未經身份驗證的請求點擊我的頁面時,它會被重新路由到這個 url mydomain/admin/login/?next=/admin/login?next=/my_path。一旦登錄發生在該頁面上,該頁面將被重新路由到mydomain/admin而不是mydomain/my_page。然后,當我呼叫mydomain/my_page它時,它會被路由到正確的頁面(因為請求已通過身份驗證)。
我嘗試用
return HttpResponseRedirect((('/admin/login?next=/my_page').encode('utf-8')))
但沒有用。我也無法在 django 檔案中找到有關是否以及如何更改重定向方法的任何內容。
有任何想法嗎?
uj5u.com熱心網友回復:
在查看此處和此處的檔案后,我認為重定向現在需要在管理員之后使用斜杠。
所以這return redirect('/admin/login/?next=/my_page')解決了我的問題。否則,它會將提供的鏈接附加到我的網址。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316609.html
