2012-04-16 53 views
2

網址:http://twitter.github.com/bootstrap/base-css.html#forms如何在django-registraton中使用Boostrap的客戶端驗證?

它說我要補充

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

但在這裏我想補充一點?

如果密碼不匹配,如果用戶名已被佔用,如果電子郵件地址無效,我希望輸入字段顯示紅色邊框並向右側顯示錯誤消息(就像在Twitter Boostrap表格頁)

這裏是我的整個registration_form.html模板。它有一個{{形式}}標籤,其包括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 %} 

例子: enter image description here

回答

4

django-bootstrap是一個偉大的圖書館爲你自動執行此操作。它依靠使用它爲您呈現的自定義Form對象。 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 

接下來,你必須告訴Django註冊使用這個新的形式。 Django的註冊默認設置是將它添加到您的urls.py:

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

但是,這種使用默認的形式。要進行自定義,您可以明確指定URL。從django註冊的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註冊中使用的所有表單重複此過程。生成的報名表看起來是這樣的,當錯誤出現:

enter image description here

+0

拋出找不到頁面。你能填空嗎?我是Django的新手。爲什麼我需要那個通過並且什麼都不做的空類?爲什麼我需要爲^ register $寫一個單獨的url,當django-registrations已經爲account/register下提供了一個。如果你能在GitHub上上傳這個示例工作項目,我將非常感激,所以我可以看看並從中學習!謝謝! – 2012-04-17 11:58:04

+0

我重寫了這篇文章,試圖澄清發生了什麼。不幸的是,我在一個內部項目中使用它,所以我不能將您鏈接到代碼。讓我知道這是否有幫助。 – jterrace 2012-04-17 16:38:17

+0

謝謝你的廣泛解釋。有效!。 – 2012-04-18 01:58:44