我正在尝试在django中使用javascript库,它需要camelCase中HTML元素的一些属性。例如,我有一个带有CharField字段的模型,如下所示:
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之后输出的HTML是这样的:
<input id="id_expires" type="text" name="expires" someattribute="SomeValue">
而不是:
<input id="id_expires" type="text" name="expires" SomeAttribute="SomeValue">
我错过了什么吗?
答案 0 :(得分:0)
我在django表单代码库中找不到任何东西,这表明它是任何django的错。你是如何呈现表格的?有关我的详细信息,请参阅我的shell会话。
>>> 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>'
>>>
答案 1 :(得分:0)
正如Issac指出的那样,你应该是正确的。 Django内部负责在django.forms.widgets
中呈现上述内容return mark_safe(u'<input%s />' % flatatt(final_attrs))
应该给你正确的attr你正在寻找。当我检查Firebug中呈现的HTML时,我确实复制了您的问题。似乎Firebug降低了属性名称,但是当我做了一个视图源代码时,它确实显示为SomeAttribute而不是Firebug中的某个属性(如果这确实是你正在做的事情:))