Bir django şablonunun içinde ilk harfi büyük yapın


114

Olarak depolanan bir veritabanından bir isim alıyorum myname. Bunu bir Django şablonu içinde Mynameilk harf büyük olacak şekilde nasıl gösterebilirim ?

Yanıtlar:


205

Başlık adı verilen Django yerleşik şablon filtresini kullanma

{{ "myname"|title }}

13
Tek kelimelik dizeler için çalışır. Ancak, birden çok kelimeli bir dizeniz varsa, dizenin ilk harfi yerine her bir sözcüğün ilk harfini yukarı çıkaracaktır.
Valdir Stumm Junior

Bununla birlikte, "Arkadaşımın evi" veya "Arkadaşımın" ve "Sen" Sen "haline gelen" büyük harfli bir ucubesin "gibi kesme işaretlerinde kullanışlı değildir.
Timo

2
Bu cevap yanlış. | title bir dizenin ilk harfini büyük yapmaz. Her kelimenin ilk harfini büyük yapar. Örnek, "merhaba dünya" "Merhaba dünya" olmaz. "Merhaba Dünya" olur.
Marcus Lind

9
{{Obj | capfirst}}, yalnızca ilk karakteri büyük harf yapmak için. {{Obj | title}} bunu Camel Case yapar.
Nrzonline

123

Biraz geç olduğunu biliyorum, ama capfirst'i kullanabilirsiniz :

{{ "waiting for action"|capfirst }}

Bu, "İşlem bekleniyor" ile sonuçlanacaktır


8
İlk harfin büyük harfle yazılmasını istiyorsanız bu doğru cevaptır.
Rick Westera

Bu, ilk karakterin büyük harf olmasını sağlar, ancak dizenin geri kalanının küçük harf olmasını sağlamaz. örneğin "Merhaba Dünya", "Merhaba dünya" değil, "Merhaba Dünya" olur. Bazen iyidir, ama her zaman değil :)
Phil Gyford

Evet, ancak bu konu başlangıcındaki soruyla alakalı değil. Ekstra mantığı işlemek için ek filtreler uygulanmalıdır. Örneğin, @ bjorn-garcia, yalnızca ilk kelimenin büyük harfle yazılmasını sağlamak için bir çözüm sunar.
oblalex

21

Bu çözüm, birden çok sözcüğünüz varsa da işe yarar (örneğin tümü büyük harf):

{{ "ALL CAPS SENTENCE"|lower|capfirst }}

Bu, "Tümü büyük harf" sonucunu verir.


8

titleFiltre cezası çalışır, ancak böyle bir çoğu-kelime dize varsa: "some random text", sonuç olacak "Some Random Text". Gerçekten istediğiniz şey tüm dizenin yalnızca ilk harfini büyük harfle yazmaksa , kendi özel filtrenizi oluşturmalısınız.

Bunun gibi bir filtre oluşturabilirsiniz (bu dokümandan özel bir şablon filtresinin nasıl oluşturulacağına ilişkin talimatları izleyin - oldukça basittir):

# yourapp/templatetags/my_filters.py
from django import template

register = template.Library()

@register.filter()
def upfirstletter(value):
    first = value[0] if len(value) > 0 else ''
    remaining = value[1:] if len(value) > 1 else ''
    return first.upper() + remaining

Ardından, şablonunuza my_filters dosyasını yüklemeli ve orada tanımlanan filtreyi kullanmalısınız:

{% load my_filters %}

...
{{ myname|upfirstletter }}

1
olumsuz oy - shuckc mevcut işlevselliğini çoğaltır|capfirst
shuckc

Django varsayılanlarının uygulanmasını burada görebilirsiniz: github.com/django/django/blob/master/django/template/…
phyatt

1

Şablon değişkeninde benim için çalıştı.

{{ user.username|title }}

Kullanıcı "al hasib" ise "Al Hasib" döndürür.

veya

{{ user.username|capfirst }}

Kullanıcı "hasib" ise sonuncusu "Hasib" döndürür.

İkisi de aynı gibi görünüyor ama bazı farklılıklar var.


0

Sadece Django'da{{myname | capfirst}} şablon filtresi kullanın, önce belirli bir dizenin ilk harfini capatialize edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.