0

我試圖做它在這個環節上說: https://docs.djangoproject.com/en/1.5/topics/auth/default/#django.contrib.auth.views.login如何使用Django的通用視圖來驗證

所以在上面提供的鏈接,在那裏談論「URL名稱:登錄」,在可選參數,它說:

「redirect_field_name:包含一個URL GET字段的名稱登錄後重定向到覆蓋未來如果給定的GET參數傳遞。」

如何指定接下來是什麼?如果您滾動多一點了,它說

「...的觀點重定向到明年中指定的URL。如果接下來沒有提供,它重定向到settings.LOGIN_REDIRECT_URL」。

如何指定接下來是什麼以及settings.LOGIN_REDIRECT_URL是什麼?

此外,如果有人能夠舉例說明如何使用通用視圖進行身份驗證,但如果不是這樣,那很好,只要上面的問題得到解答。我知道他們舉了一個模板的例子,但我想要一個如何創建實際視圖並使用它的例子。

回答

2

假設你urls.py類似於此:

from django.conf.urls.defaults import * 
from django.views.generic.simple import direct_to_template 

urlpatterns = patterns('', 
    url(r'^$', 'mywebsite.index', name='index'), 
    url(r'^login/$', 'django.contrib.auth.views.login', name='login'), 
    url(r'^logout/$', 'django.contrib.auth.views.logout_then_login', name='logout') 
) 

然後在你的設置文件,把這樣的事情:

LOGIN_REDIRECT_URL = 'index' 
LOGIN_URL = 'login' 
LOGOUT_URL = 'logout' 

,這將導致在登錄頁面重定向到mywebsite.index視圖(因爲name='index'與此視圖匹配,這就是我們在LOGIN_REDIRECT_URL中設置的內容。)

我知道他們給了一個模板的例子,但我想要一個如何創建實際視圖並使用它的例子。

「實際視圖」由django在django.contrib.auth.views.login提供,因此您根本不需要創建視圖。這是你正在閱讀的部分的全部。您提供模板,該模板發佈到視圖,然後視圖重定向到LOGIN_REDIRECT_URL

現在,當您使用@login_required裝飾器時,django會通過內置的django登錄視圖將用戶重定向到您的登錄模板。

+0

嗯沒關係,所以如果我想重定向到一個URL,如果表單無效/如果用戶名不符合密碼,我會在哪裏指定重定向到哪裏?我只是看着django.contrib.auth.views.login,並有一個if form.is_valid()語句,但沒有其他語句,如果它是無效的..我應該只是將它添加到視圖中,如果它無效,然後重定向到另一個網址? – user2817200

+0

@ user2817200如果無效,它會返回到登錄頁面,並顯示相應的表單錯誤,這是您(通常)需要的。 –

相關問題