2016-08-16 45 views
0

我想定制AllAuth界面。 我可以单独覆盖LoginForm的和SignupForm,但如果我重写他们两个,我得到这个错误:drango-allauth不能覆盖注册和登录表单

Module "app.forms" does not define a "BootstrapSignupForm" class 

我的形式:

class BootstrapLoginForm(LoginForm): 
    def __init__(self, *args, **kwargs): 
     super(BootstrapLoginForm, self).__init__(*args, **kwargs) 
     self.fields['login'].widget.attrs['class'] = 'form-control'; 
     self.fields['login'].widget.attrs['placeholder'] = 'User name'; 

     self.fields['password'].widget.attrs['class'] = 'form-control'; 
     self.fields['password'].widget.attrs['placeholder'] = 'Password'; 

class BootstrapSignupForm(SignupForm): 
    def __init__(self, *args, **kwargs): 
     super(BootstrapSignupForm, self).__init__(*args, **kwargs) 
     self.fields['username'].widget.attrs['class'] = 'form-control'; 
     self.fields['username'].widget.attrs['placeholder'] = 'user name'; 

我settings.py

ACCOUNT_FORMS = {'login': 'app.forms.BootstrapLoginForm'} 
ACCOUNT_SIGNUP_FORM_CLASS = 'app.forms.BootstrapSignupForm' 

但是,如果我只保留其中一个,它就可以工作。 为什么不可能同时覆盖很多allauth表单?有没有解决方法?什么是改变AllAuth主题的googd实践?有没有简单的方法来设置bootstrap?

回答

1

ACCOUNT_SIGNUP_FORM_CLASS表示包含添加到注册表单中的一些附加字段的表单。所以,它实际上并没有取代真正的注册表单,它的字段只是被合并到了它中。

如果您确实想要替换实际的表格,那么您的确应该使用ACCOUNT_FORMS。在那里只需添加注册码。请注意,还有一个SOCIALACCOUNT_FORMS照顾...

请参阅How to customize user profile when using django-allauth有关ACCOUNT_SIGNUP_FORM_CLASS的详细信息。

+0

谢谢!我建议django-widget-tweaks,这是编辑表单字段类的好方法。 – Ben