2011-12-21 10 views
1

登録フォームがあり、私はDjango登録を使用しています。今、各フ​​ィールドにcssクラスを追加する必要があります。また、検証エラーがある場合、cssクラスはエラーのあるフィールドに対して異なる必要があります。どうすればこれを達成できますか? HTMLテンプレートで要素のクラス属性を変更する - Djangoフォーム

class RegistrationForm(forms.Form): 
""" 
Form for registering a new user account. 

Validates that the requested username is not already in use, and 
requires the password to be entered twice to catch typos. 

Subclasses should feel free to add any additional validation they 
need, but should avoid defining a ``save()`` method -- the actual 
saving of collected user data is delegated to the active 
registration backend. 

""" 
error_css_class = 'error' 
required_css_class='wanted' 

email = forms.EmailField(widget=forms.TextInput(attrs=dict(maxlength=75)), 
         label=_("Email address")) 
password1 = forms.CharField(widget=forms.PasswordInput(render_value=False), 
          label=_("Password")) 
password2 = forms.CharField(widget=forms.PasswordInput(render_value=False), 
          label=_("Password (again)")) 

、私は

<div class="row"> 
<label for="id_email"><span>*</span> Email Address:</label> 
{{ form.email }} 
</div> 

をしています注は結局、私は私が

{{form.email|add_class:"blink"|add_error_class:"error"}} 

答えて

2

を行うことが許可されwidget_tweaksを、使用して終了あなたはせずにフォームフィールドをターゲットにすることができます各フィールドにクラスを追加します。 as_table(フォームのユニコードメソッドのデフォルト)、as_ulまたはas_pを使用してフォームをレンダリングするかどうかに応じて、次のようなCSSルールを使用してください。エラーのある必要なフィールドとフィールドの場合

form tr {...} 
form li {...} 
form p {...} 

、フォームのために、それぞれrequired_css_classerror_css_class属性を定義することができます。

class ContactForm(Form): 
    error_css_class = 'error' 
    required_css_class = 'required' 

詳細については、Styling required or erroneous form rowsのドキュメントを参照してください。

テンプレート内のフォームフィールドを手動でレンダリングする場合は、css_classesメソッドを使用してフィールドのCSSクラスにアクセスできます。

<div class="row {{ form.email.css_classes }}"> 
<label for="id_email"><span>*</span> Email Address:</label> 
{{ form.email }} 
</div> 
+0

+1。人々はカスケーディングスタイルシートの*カスケード*部分を忘れているようです。 –

+0

両方の属性を追加しましたが、機能しません。フィールドは、email = forms.EmailField(widget = forms.TextInput(attrs = dict(maxlength = 75))、 label = _( "メールアドレス")) – John

+0

のように定義されています。 、テンプレート、および出力を表示します。 – Alasdair

関連する問題