2010-02-02 33 views

cevap

10

Bu değişikliği yapmak için yerleşik etiket veya filtre yoktur. Belirli bir karakter tarafından ayrılan bir filtre yazın ve sonra bunu join filtresiyle birleştirin veya doğrudan değiştirme yapan bir filtre yazın.

+2

http://docs.djangoproject.com/en/dev/howto/custom-template-tags/ – jcdyer

+0

Özel filtreleri bir içerme, herhangi bir fikirle kullanamıyorum gibi görünüyor mu? – dotty

+3

not: Kendiniz {% load%} tekrar! – dotty

4

kendi özel etiketini yazmak için sevmiyorum Eğer ben dönüşümler bu tür gerçekleştirmek ister ... böyle Bununla onun oldukça ayrıntılı

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

...

6

yapabileceğini benim görünümü/denetleyicisi kodu yani:

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

sadece yeni bir (geçici) özelliği eklemek ve şablonda bu kullanmak korkmayın:

{{ user.underscored_name }} 

daha fazla yerde bu kullanırsanız 10 Kullanıcı modeline yöntem underscored_name ekleyin:

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

Bu özellik, bir django html sayfası tarafından çağrılmadığı sürece çalışır. Sınıfta 'self.underscored_name 'alanı ayarlamayı önerin. Yine de +1, bir sorunu çözmemde bana yardımcı oldu. – IAbstract

73

Matthijs' cevabı daha kısa versiyonu: Elbette

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

sadece çalışır boşlukta bölme.

+0

Mükemmel! Sadece ihtiyacım olan şey! –

+2

Daha kısa versiyonları severim. – Gnijuohz

+2

WOW! bunu nasıl özledim – Matthijs

İlgili konular