ヘイ、私はいくつかのテンプレートを書いていますが、文字列内で ""を "_"に変換したいです。
の出力を変換したい
{{ user.name }}
「My Name」のようなものから「My_Name」まで。どうすればいいですか?
この置換を行うための組み込みのタグまたはフィルターはありません。特定の文字で分割するフィルターを作成し、それをjoin
フィルターと組み合わせるか、直接置換を行うフィルターを作成します。
Matthijsの回答の短縮版:
{{ user.name.split|join:"_" }}
もちろん、空白で分割する場合にのみ機能します。
私は私のビュー/コントローラーコードでこのタイプの変換を実行するのが好きです:
user.underscored_name = user.name.replace(' ','_')
context['user'] = user
新しい(一時的な)プロパティを追加し、テンプレートでこれを使用することを恐れないでください:
{{ user.underscored_name }}
これをより多くの場所で使用する場合、メソッドunderscored_nameをUserモデルに追加します。
class User()
def underscored_name(self):
return self.name.replace(' ','_')
独自のカスタムタグを記述したくない場合は、次のようにすることができます...
{% for Word in user.name.split %}{{Word}}{% if not forloop.last %}_{% endif %}{% endfor %}
しかし、非常に冗長です...