26


5

djangoテンプレート、他の文字列で置換文字列を見つける

ヘイ、私はいくつかのテンプレートを書いていますが、文字列内で ""を "_"に変換したいです。

の出力を変換したい

{{ user.name }}

「My Name」のようなものから「My_Name」まで。 これをどうやってやるの?

4 Answer


77


Matthijsの回答の短縮版:

{{ user.name.split|join:"_" }}

もちろん、空白で分割する場合にのみ機能します。


11


この置換を行うための組み込みのタグまたはフィルターはありません。 特定の文字で分割するフィルターを作成し、それを `join`フィルターと組み合わせるか、直接置換を行うフィルターを作成します。


6


私は私のビュー/コントローラコードでこのタイプの変換を実行するのが好きです:

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(' ','_')


4


独自のカスタムタグを記述したくない場合は、このようにすることができます …​

{% for word in user.name.split %}{{word}}{% if not forloop.last %}_{% endif %}{% endfor %}

しかし、その非常に冗長な…​