2010-02-02 396 views

回答

10

沒有內置的標籤或過濾器來做這個替換。編寫一個按給定字符分割的過濾器,然後將其與join過濾器結合使用,或者編寫一個直接進行替換的過濾器。

+2

http://docs.djangoproject.com/en/dev/howto/custom-template-tags/ – jcdyer 2010-02-02 15:34:37

+0

似乎我不能使用自定義過濾器與包含,任何想法? – dotty 2010-02-02 15:53:02

+3

重新注意:用戶{%load%}! – dotty 2010-02-02 16:03:38

4

如果你不喜歡寫自己的自定義標籤,你可以做這樣的......

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

但是它非常詳細...

6

我喜歡在執行這種類型的轉換我的看法/控制器代碼,即:

user.underscored_name = user.name.replace(' ','_') 
context['user'] = user 

不要害怕只需添加一個新的(臨時)財產,在您的模板使用:

{{ user.underscored_name }} 

如果你使用這個在更多的地方的方法underscored_name添加到用戶模式:

class User() 
    def underscored_name(self): 
    return self.name.replace(' ','_') 
+0

只要該屬性不被django html頁面調用,它就會工作。推薦在該類中設置一個'self.underscored_name'字段。無論如何,因爲它幫助我解決了一個問題。 – IAbstract 2014-08-27 20:52:42

73

一個較短的版本Matthijs'回答:

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

當然它只能當按空白分割。

+0

完美!正是我需要的! – 2012-06-19 19:12:22

+2

我喜歡較短的版本。 – Gnijuohz 2012-09-23 14:31:42

+2

哇!我怎麼錯過了? – Matthijs 2014-01-30 22:51:09