2012-04-16 3 views
2

URL: http://twitter.github.com/bootstrap/base-css.html#formsКак использовать проверку на стороне клиента Boostrap в django-registraton?

Он говорит, что я должен добавить

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

Но где бы я добавить, что?

Если пароль не совпадает, если имя пользователя уже выполнено, если адрес электронной почты недействителен, я бы хотел, чтобы поле ввода отображало красную рамку и отображало сообщение об ошибке справа (как в Twitter Boostrap forms page)

Вот мой весь registration_form.html шаблон. Она имеет вид {{}} тег, который включает в себя 4 поля по умолчанию:

  1. Имя пользователя
  2. Email
  3. Пароль
  4. пароль (еще раз)

registration_base.html просто extends 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

ответ

4

django-bootstrap является большая библиотека, которая делает это автоматически. Он полагается на использование настраиваемого объекта формы, который он предоставляет для вас. Форма по умолчанию, используемая для регистрации в django-регистрации, - registration.forms.RegistrationFormUniqueEmail. Чтобы объединить эту форму с django-bootstrap, вам нужно определить новый класс, который наследуется от обоих. Например, поместите это в forms.py файла:

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

Далее, вы должны сказать Джанго регистрации, чтобы использовать эту новую форму. Настройка по умолчанию для Джанго регистрации, чтобы добавить к вашему urls.py:

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

Но это использует форму по умолчанию. Чтобы настроить, вы можете явно указать URL-адреса. Скопируйте их из django-registration's 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'), 

You может повторить этот процесс для всех форм, используемых в django-регистрации. Полученная форма регистрации выглядит следующим образом присутствуют ошибки:

enter image description here

+0

Броски страница не найдена. Не могли бы вы заполнить пробелы? Я новичок в Django. Зачем мне этот пустой класс, который проходит и ничего не делает? Зачем мне нужно писать отдельный URL-адрес для^register $, если вы уже предоставили вам django-регистрации по учетным записям/регистрам. Я был бы очень признателен, если бы вы могли загрузить этот примерный рабочий проект на GitHub, чтобы я мог взглянуть и узнать от него!Спасибо! –

+0

Я переписал сообщение, чтобы попытаться прояснить, что происходит. К сожалению, я использую это во внутреннем проекте, поэтому я не могу связать вас с кодом. Позвольте мне знать, если это помогает. – jterrace

+0

Спасибо за столь обширное объяснение. Это сработало!. –

Смежные вопросы