【问题标题】:How to use Boostrap's client-side validation in django-registraton?如何在 django-registration 中使用 Bootstrap 客户端验证?
【发布时间】:2012-04-16 08:23:26
【问题描述】:

网址: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 %}

示例:

【问题讨论】:

    标签: python django django-registration


    【解决方案1】:

    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 中使用的所有表单重复此过程。出现错误时生成的注册表如下所示:

    【讨论】:

    • 找不到页面。你能填空吗?我是 Django 的新手。为什么我需要那个通过并且什么都不做的空类?为什么我需要为 ^register$ 编写一个单独的 url,而 django-registrations 在accounts/register 下已经为您提供了一个。如果您能在 GitHub 上上传这个示例工作项目,我将不胜感激,这样我就可以看看并从中学习!谢谢!
    • 我重写了这篇文章,试图澄清发生了什么。不幸的是,我在一个内部项目中使用它,所以我无法将您链接到代码。让我知道这是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 2013-02-11
    • 2017-08-07
    • 2013-04-25
    • 2016-08-29
    • 1970-01-01
    • 2015-01-07
    • 2019-01-16
    相关资源
    最近更新 更多