我試圖讓一個已經登錄的用戶訪問登錄頁面時,他們被重定向到他們的帳戶頁面。如果用戶已經登錄到Django中,如何從登錄頁面重定向?
我決定通過擁有自己的登錄視圖來檢查用戶是否已登錄並重定向(如果是)。如果他們沒有登錄,它將繼續使用contrib登錄視圖。
問題是我需要能夠指定contrib登錄authentication_form和template_name。當我直接調用login()時,如何指定這些內容?
我運行Django的版本1.10.3
這裏是我的代碼...
urls.py
from django.conf.urls import include, url
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from Account.views import RenderLoginPage
from django.contrib.auth.views import logout
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/$', RenderLoginPage, name='login'),
url(r'^logout/$', logout, {'next_page': '/login'}, name='logout')
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
views.py
from django.shortcuts import redirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import login
from forms import LoginForm
def RenderLoginPage(request):
if request.user.is_authenticated():
return redirect(reverse("myaccount"))
else:
return login(request)
那麼怎麼辦我指定template_name & authentication_form?如果我直接通過URL來做這件事,而沒有自定義的登錄視圖,我會這麼做......但我不能,因爲我需要自定義登錄視圖。
url(r'^login/$', login, {'template_name': 'login.html', 'authentication_form': LoginForm}, name='login'),
哪個Django的版本? –
@AamirAdnan 1.10.3 – Ricky