2015-07-12 108 views
2
{% for fields in form %} 
    {{ field.label }} 
    {{ field }} 
{% endfor %} 

{{ field }}将呈现类似于:渲染形式没有标签的Django

<input type="text" id="something_id" .../>

有没有一种方法可以让我呈现的字段,而不必让它包装在一个标签?因此,举例来说,我呈现的字段和我(不输入标签):

type='text' id='_something_id'

在这种情况下,我可以继续手动添加自定义类的和何时何地我想喜欢:

<input {{ field }} class='class class-again' required autocomplete='off' />

有没有办法我能做到这一点在Django,渲染现场没有它包裹在元素?

显然,如果在大量的领域工作使得这种方法不切实际,那么这种格式化的难度可能会很累。在我的情况下,我只是想裁剪一些CSS只有两个字段,并且必须通过Django Forms或模板标签等,我发现处理冗长

回答

0

这是可能的。您可以编写自己的HTML代码,您知道Django使用格式分配idname属性,如:id='something_id'name属性是重要的属性,您应该确保它与Django分配的属性相同。

另一种选择是这样的:

# I will assume you have a field named something 
something = forms.CharField(widget=forms.TextInput(attrs={'class':'class class-again''})) 

这应该做你所需要的。我希望这有帮助。

1

,如果你知道的输入类型你可以这样做:(用他们的名字,比如form.username

{% for field in form %} 
    {{ field.label_tag }} 
    <input type="text" id="{{ field.id_for_label }}" name="{{ field.html_name }}" value="{{ field.value }}"/> 
{% endfor %} 

如果你有不同的输入类型,你仍然可能会在田地改为手动遍历他们的。

然而,在大多数情况下,最好是使用widget API这样做在后端那些事:

name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'})) 
+0

这看起来很有希望。请尽快尝试。 – Rexford