2015-07-12 105 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