如何在django-registration中使用Bootstrap的客户端验证?

时间:2012-04-16 08:23:27

标签: python django django-registration

网址: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. 密码(再次)
  5. 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 %}
    

    实施例: enter image description here

1 个答案:

答案 0 :(得分: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的default backend urls.py复制它们。注册的默认条目如下所示:

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

要指定您要使用自定义表单对象,the documentation表示您可以传递参数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中使用的所有表单重复此过程。出现错误时,生成的注册表格如下所示:

enter image description here