2011-10-19 5 views
0

camelCaseのHTML要素にいくつかの属性を必要とするdjangoでjavascriptライブラリを使用しようとしています。例えば、私はこのようなCharFieldですフィールドでモデルをしました:Django:HTML入力要素に大文字の属性名を追加できません

expires = models.DateField("Expiration Date", db_index = False, blank = True, null = True, editable = True, help_text = "Something") 

私のModelFormはのinit方法に以下の行を持っています

self.fields['expires'].widget.attrs['SomeAttribute'] = "SomeValue" 

とrender_to_response後outputed HTMLですこのような:

<input id="id_expires" type="text" name="expires" someattribute="SomeValue"> 

の代わり:

<input id="id_expires" type="text" name="expires" SomeAttribute="SomeValue"> 

何か不足していますか?

+0

Javascriptライブラリとは何ですか? DOMと正しく対話している場合は、ケーシングはまったく問題ではありません。 – Jordan

+0

ありがとう、ジョーダン、私はjQueryを使用しています。私は、属性ラベルは大文字と小文字を区別しないと思います。 – Reichert

+0

はい、そうです。属性ケーシングは重要ではありません。前回の記事では、HTMLとXHTMLの両方で大文字と小文字の区別が異なるため、すべてのブラウザで大文字小文字を区別しない方法で取り出しました。 – Jordan

答えて

0

Issacが一番上を指摘しているように、あなたは正しいはずです。 Djangoはあなたが探している正しいのattrを与える必要がありますdjango.forms.widgets

return mark_safe(u'<input%s />' % flatatt(final_attrs)) 

に上記の描画処理に対応する内部。 FirebugでレンダリングされたHTMLを検査したときに問題を再現するようになりました。 Firebugは属性名を小文字にしているようですが、ビューソースコードを実行したときFirebugのSomeAttributeまたはSomeAttributeとして表示されました(これが本当にあなたが行っているのであれば:))

+0

はい、火かき棒のバグでした! – Reichert

0

djangoフォームのコードベースで、djangoの欠陥であることを示唆しているものが見つかりませんでした。どのようにフォームをレンダリングしていますか?私の詳細については、私のシェルセッションをご覧ください。

>>> from django import forms 
>>> class F(forms.Form): 
... a = forms.CharField() 
... 
>>> f = F() 
>>> f.as_p() 
u'<p><label for="id_a">A:</label> <input type="text" name="a" id="id_a" /></p>' 
>>> f.fields['a'].widget.attrs 
{} 
>>> f.fields['a'].widget.attrs['dERP'] = 'ddf' 
>>> f.as_p() 
u'<p><label for="id_a">A:</label> <input id="id_a" type="text" name="a" dERP="ddf" /></p>' 
>>> 
関連する問題