2012-03-22 65 views
0

我在我的意見中使用@login_required ..和在Django書中,他們告訴我你不想使用默認的registration/login.html模板,你可以傳遞額外的視圖參數template_name 。@login_required裝飾在Django 1.1和Template_name

但四嘗試:

@login_required(template_name='washtest/login.html') 

,但我有一個錯誤

login_required()得到了一個意想不到的關鍵字參數 'TEMPLATE_NAME'

所以,我怎樣才能把我的TEMPLATE_NAME用於在我的應用程序登錄?有這個裝飾者?

求助THX

洛朗

回答

1

我沒有發現任何login_required模板變種... https://docs.djangoproject.com/en/1.1/topics/auth/#django.contrib.auth.decorators.login_required

你可以使用權限裝飾在urls.py,然後檢查用戶是否是登錄:

(r"^market/$", permission_required("CHANGE", "/accounts/denied/")(CreateMarketView.as_view())) 
+0

這裏的django文檔:如果你不想調用模板registration/login.html,你可以通過額外的參數將template_name參數傳遞給你的URLconf中的視圖。例如,此URLconf行將使用myapp/login.html來代替: (r'^ accounts/login/$','django.contrib.auth.views.login',{'template_name':'myapp/login。您可以通過將redirect_field_name傳遞給視圖來指定包含要在登錄後重定向到的URL的GET字段的名稱。默認情況下,該字段在下一個被調用。 – laurent 2012-03-22 15:49:20

+0

所以我想我可以使用template_name與裝飾器..我錯了我認爲 – laurent 2012-03-22 15:50:43

+0

我認爲你應該改變模板,並保留舊視圖中的所有邏輯 – 2012-03-22 15:52:57

3

template_name可以在login view,不能設置在裝飾者login_required

login_required使用在settings.LOGIN_URL中設置的URL。因此,您使用該網址和自定義模板定義您的視圖:

(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}), 

這樣您將擁有自定義登錄模板。

相關問題