2

网址:http: //twitter.github.com/bootstrap/base-css.html#forms

它说我必须添加

<fieldset
class="control-group error">
…
</fieldset>

但是我会在哪里添加呢?

如果密码不匹配,如果用户名已被使用,如果电子邮件地址无效,我希望输入字段显示红色边框并在右侧显示错误消息(就像在 Twitter Boostrap 表单页面中一样)

这是我的整个registration_form.html模板。它有一个 {{ form }} 标签,默认包含 4 个字段:

  1. 用户名
  2. 电子邮件
  3. 密码
  4. 密码(再次)

registration_base.html只是扩展了 base.html,其中包含页面的基本结构。

{% extends "registration/registration_base.html" %}
{% block title %}Register for an account{% endblock %}
{% block content %}

<table>
    <form method='post' action='' class="control-group error" >{% csrf_token %}
        {{ form }}
        <tr><td></td><td><input type="submit" value="Register" /></td>
    </form>
</table>
{% endblock %}

例子: 在此处输入图像描述

4

1 回答 1

4

django-bootstrap是一个很棒的库,它会自动为你做这件事。它依赖于使用它为您呈现的自定义 Form 对象。django-registration 中用于注册过程的默认格式是registration.forms.RegistrationFormUniqueEmail. 要将这种形式与 django-bootstrap 结合起来,您需要定义一个继承自两者的新类。例如,将其放在您的 forms.py 文件中:

# forms.py
from bootstrap.forms import BootstrapForm
from registration.forms import RegistrationFormUniqueEmail
class RegistrationForm(RegistrationFormUniqueEmail, BootstrapForm):
    pass

接下来,您必须告诉 django-registration 使用这个新表单。django-registration 的默认设置是将其添加到您的 urls.py 中:

# urls.py
(r'^accounts/', include('registration.backends.default.urls')),

但是,这使用默认形式。要进行自定义,您可以明确指定 URL。从 django-registration 的默认后端 urls.py复制它们。注册的默认条目如下所示:

# urls.py
from registration.views import register
url(r'^register/$',
    register,
    {'backend': 'registration.backends.default.DefaultBackend'},
    name='registration_register'),

要指定您要使用自定义表单对象,文档表明您可以传递一个参数,form_class,如下所示:

# urls.py
from yourapp.forms import RegistrationForm
from registration.views import register
url(r'^register/$',
    register,
    {'backend': 'registration.backends.default.DefaultBackend'
     'form_class': RegistrationForm},
    name='registration_register'),

您可以对 django-registration 中使用的所有表单重复此过程。出现错误时,生成的注册表如下所示:

在此处输入图像描述

于 2012-04-16T23:58:41.993 回答