Buat huruf besar pertama di dalam template django

114

Saya menarik nama dari database yang disimpan sebagai myname. Bagaimana saya menampilkan ini di dalam template Django sebagai Myname, dengan huruf pertama dalam huruf besar.

Mayank
sumber

Jawaban:

205

Menggunakan filter cetakan bawaan Django yang disebut judul

{{ "myname"|title }}
Aamir Adnan
sumber
13
Ini berfungsi untuk string satu kata. Tapi, jika Anda memiliki string multi-kata, itu akan berada di atas huruf pertama dari setiap kata, bukan huruf pertama dari string.
Valdir Stumm Junior
Ini bahkan tidak berguna dengan apostrof seperti "Rumah teman saya" atau "Anda adalah orang aneh huruf besar" yang menjadi "Teman" dan "Anda".
Timo
2
Jawaban ini salah. | Judul tidak membuat huruf pertama dari sebuah string menjadi huruf kapital. Itu membuat huruf pertama dari setiap kata menjadi huruf besar. Contoh, "halo dunia" tidak menjadi "Halo dunia". Ini menjadi "Hello World".
Marcus Lind
9
Gunakan {{obj | capfirst}} untuk membuat huruf besar menjadi karakter pertama saja. Menggunakan {{obj | judul}} membuatnya menjadi Kasus Unta.
Nrzonline
123

Saya tahu ini agak terlambat, tetapi Anda dapat menggunakannya capfirst :

{{ "waiting for action"|capfirst }}

Ini akan menghasilkan "Menunggu tindakan"

oblalex
sumber
8
Ini adalah jawaban yang benar jika Anda hanya ingin huruf pertama menggunakan huruf besar.
Rick Westera
Ini akan memastikan karakter pertama adalah huruf besar, tetapi tidak akan memastikan sisa string adalah huruf kecil. misal, "hello World" akan menjadi "Hello World", bukan "Hello world". Yang terkadang baik-baik saja, tetapi tidak selalu :)
Phil Gyford
Ya, tapi ini tidak relevan dengan pertanyaan tentang topik pembuka. Filter tambahan harus diterapkan untuk menangani logika tambahan. Misalnya, @ bjorn-garcia memberikan solusi untuk memastikan hanya kata pertama yang menggunakan huruf besar.
oblalex
21

Solusi ini juga berfungsi jika Anda memiliki banyak kata (misalnya huruf besar semua):

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

Ini akan menampilkan "Kalimat huruf besar semua".

Bjorn Garcia
sumber
8

The titleFilter bekerja dengan baik, tetapi jika Anda memiliki string banyak-kata-kata seperti: "some random text", hasilnya akan menjadi "Some Random Text". Jika yang benar-benar Anda inginkan adalah huruf besar hanya huruf pertama dari keseluruhan string, Anda harus membuat filter kustom Anda sendiri.

Anda dapat membuat filter seperti ini (ikuti petunjuk tentang cara membuat filter template kustom dari dokumen ini - ini cukup sederhana):

# 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

Kemudian, Anda harus memuat file my_filters di template Anda, dan menggunakan filter yang ditentukan di sana:

{% load my_filters %}

...
{{ myname|upfirstletter }}
Valdir Stumm Junior
sumber
1
downvote - menduplikasi fungsi yang ada dari|capfirst
shuckc
Anda dapat melihat implementasi default django di sini: github.com/django/django/blob/master/django/template/…
phyatt
1

Ini bekerja untuk saya dalam variabel template.

{{ user.username|title }}

Jika pengguna adalah "al hasib" maka ia akan mengembalikan "Al Hasib"

atau

{{ user.username|capfirst }}

Jika pengguna adalah 'hasib' maka yang terakhir akan mengembalikan "Hasib"

Keduanya terlihat sama tetapi ada beberapa perbedaan.

hasib
sumber
0

Cukup gunakan {{myname | capfirst}} Dalam Django filter cetakan pertama-tama mengatur spasial huruf pertama dari string yang diberikan.

Amitha Mohan
sumber