2014-05-21 59 views
0

我剛剛開始在Django中編碼,我有很多頁面上重複自己的代碼。Django如何從視圖DRY代碼

例如:

<select name="seasons" id="season-id"> 
    {% for season in seasons %} 
     {% if season_id|add:0 == season.id %} 
      <option value="{{ season.id }}" selected="selected">{{ season.name }}</option> 
     {% else %} 
      <option value="{{ season.id }}">{{ season.name }}</option> 
     {% endif %} 
    {% endfor %} 
</select> 

在以前的語言,我可以使用視圖助手,使它更幹。我怎樣才能在Django中完成這件事。

回答

2

提取代碼到一個單獨的模板文件,並include它,而不是重複:

{% include "seasons.html" %} 

僅供參考,你還可以指定你想只seasons變量傳遞到包括模板的上下文:

{% include "seasons.html" with seasons=seasons only %} 
+1

+1也許還想使用上下文處理器 – sdolan

+0

我只是想知道爲什麼這種方法與模板標籤 – Yannick

+1

@Yannick模板標籤通常很有用,當您需要在模板中使用自定義Python邏輯時,Django doesn' t支持。這裏有一段需要重用的html代碼。對我來說,選擇非常清楚。希望有所幫助。 – alecxe

1

取決於什麼是重複。

  1. 您可以嵌套模板。這裏可能沒用。
  2. 您可以編寫自己的模板標籤和模板過濾器。 further info
0

你不應該寫這個模板代碼。你應該定義一個Django表單並讓它輸出該字段。