Django:无法在HTML输入元素中添加UPPERCASE属性名称

时间:2011-10-19 03:19:12

标签: django

我正在尝试在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">

我错过了什么吗?

2 个答案:

答案 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中的某个属性(如果这确实是你正在做的事情:))