我正在使用 Django 構建一個字典應用程序,用戶可以在其中定義單詞。但是,我希望用戶先登錄才能執行此操作。@login_required我試圖在我的define視圖(允許用戶定義單詞的視圖)上使用內置裝飾器來實現此約束。使用@login_required,當我未登錄并嘗試定義一個單詞(使用定義表單)時,我正確地重定向到登錄頁面。這是我在views.pylogin_view中的觀點:def login_view(request): form = LoginForm(data=request.POST) if form.is_valid(): username = form.cleaned_data["username"] password = form.cleaned_data["password"] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return HttpResponseRedirect(reverse(settings.LOGIN_REDIRECT_URL)) return render(request, "users/login.html", {"form": form})此時我的網址看起來像這樣:http://127.0.0.1:8000/login?next=/define到目前為止,一切都很好。然而,一旦我登錄,Django 不會將我重定向回我最初嘗試訪問的定義表單(位于 /define)。在這種情況下,我如何告訴 Django 將我重定向到定義表單?另外,在我的settings.py中,我重新定義了LOGIN_URL、LOGIN_REDIRECT_URL和LOGOUT_REDIRECT_URL變量,如下所示:LOGIN_URL = "users:login"LOGIN_REDIRECT_URL = "dictionary:index"LOGOUT_REDIRECT_URL = "dictionary:index"其中users是處理登錄的應用程序的名稱,dictionary是處理定義的應用程序的名稱。問題可能出在這些變量之一嗎?
1 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
您可以撤消設置中的更改并更改線路
return HttpResponseRedirect(reverse(settings.LOGIN_REDIRECT_URL))
到 return redirect('/targeturl')
添加回答
舉報
0/150
提交
取消