2013-12-23 106 views
1

我正在從舊版本的Django註冊遷移到該模塊的1.0版本。如何覆蓋Django註冊版本1.0中的默認註冊表單?

我用我創建的自定義覆蓋正常註冊表單。這種行爲已停止與Django註冊1.0工作,我試圖讓它再次工作。但迄今尚未成功。這是我的urls.py文件看起來是這樣的:

from registration.views import RegistrationView 
from myApp.forms import * 

<...SNIPPED...> 

url (
    r'^accounts/register/$', 
    RegistrationView.as_view(), 
    { 
     'form_class': extendedRegistrationForm, 
     'backend': 'registration.backends.default.DefaultBackend', 
    } 
) 

這是對myApp的forms.py的樣子:

from registration.forms import RegistrationFormUniqueEmail 

<...SNIPPED...> 

class extendedRegistrationForm(RegistrationFormUniqueEmail): 
    firstName = forms.CharField(
     widget=forms.TextInput(), 
     label="First Name", 
     required=False, 
    ) 

我看到的行爲是這樣的:在登錄畫面,他們是用戶名,電子郵件地址,密碼,密碼確認的輸入框和字段標籤。但是,我的窗體中「First Name」的輸入框和字段標籤應該出現的插槽完全是空的。

如何修改urls.py和forms.py,以便我的extendedRegistrationForm中的字段正確包含在屏幕上?幾乎相同的代碼與舊版本的Django註冊工作正常。

+0

如何讓firstName字段保存到數據庫中? –

回答

3

首先,如果您要使用默認後端,則從默認後端模塊導入視圖。

from registration.backends.default.views import RegistrationView 

其次,你可以通過繼承RegistrationView,或者將它作爲參數傳遞給as_view()設置form_class。有關更多信息,請參見CBV docs

url (
    r'^accounts/register/$', 
    RegistrationView.as_view(form_class=extendedRegistrationForm), 
) 
+0

這是爲registration.backends.views.default引發一個導入錯誤。似乎沒有子模塊「視圖」。 請參閱此處的證明:https://gist.github.com/anonymous/8102337 –

+1

導入不正確。我現在修好了。 – Alasdair

+0

謝謝。成功了! –