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.

Jawaban:


205

Menggunakan filter cetakan bawaan Django yang disebut judul

{{ "myname"|title }}

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"


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".


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 }}

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.


0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.