与其直接编辑 userena 表单,不如将其放入您自己的 forms.py 文件(例如,accounts/forms.py)中,如常见问题解答中所述,并将 url 放在 userena 包含的上方。这是一个示例,我使用crispy-forms 对编辑配置文件表单进行子类化,以获得漂亮的引导表单:
帐户/forms.py
class EditProfileFormExtra(EditProfileForm):
class Meta:
model = get_profile_model()
exclude = ['user', 'mugshot', 'privacy', 'my_custom_field']
def __init__(self, *args, **kwargs):
super(EditProfileFormExtra, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = 'edit-profile-form'
self.helper.form_class = 'form-horizontal'
self.helper.form_method = 'post'
self.helper.help_text_inline = True
self.helper.add_input(Submit('submit', _('Save'), css_class='green'))
self.helper.layout = Layout(
Field('first_name', placeholder=_("First Name")),
Field('last_name', placeholder=_("Last Name")),
Field('language', css_class="chosen"),
Field('timezone', css_class="chosen"),
)
帐户/urls.py
urlpatterns = patterns(
'',
url(r'^signup/$', 'userena.views.signup', {'signup_form': SignupFormExtra}, name='signup'),
url(r'^signin/$', 'userena.views.signin', {'auth_form': SigninFormExtra}, name='signin'),
url(r'^(?P<username>[\.\w-]+)/edit/$', 'userena.views.profile_edit', {'edit_profile_form': EditProfileFormExtra}, name='edit-profile'),
url(r'^', include('userena.urls')),
)
正如您在上面的网址中看到的那样,您几乎可以使用任何形式来执行此操作。基本上它在这个 url 上说,使用原始模块视图,但用我自己的表单替换表单参数。