djangoテンプレート内の最初の文字を大文字にします


113

として保存されているデータベースから名前を取得していますmyname。これをDjangoテンプレート内でMyname最初の文字を大文字にしてとして表示するにはどうすればよいですか。

回答:


205

タイトルと呼ばれるDjango組み込みテンプレートフィルターの使用

{{ "myname"|title }}

13
これは、単一の単語の文字列に対して機能します。ただし、複数の単語からなる文字列がある場合、文字列の最初の文字ではなく、各単語の最初の文字が上に配置されます。
Valdir Stumm Junior 2013

「私の友達の家」や「あなたは大文字のフリーク」などのアポストロフィを使用すると、「Friend'S」や「You \ 'Re」になります。
Timo

2
この答えは間違っています。|タイトルは、ストリングの最初の文字を大文字にしません。各単語の最初の文字を大文字にします。例:「hello world」が「Hello world」にならない。「ハローワールド」になります。
マーカスリンド

9
{{obj | capfirst}}を使用すると、最初の文字だけが大文字になります。{{obj | title}}はキャメルケースにします。
Nrzonline 2015年

123

少し遅いのはわかっていますが、capfirstを使用できます。

{{ "waiting for action"|capfirst }}

これにより、「アクション待ち」になります。


8
これは、最初の文字だけを大文字にしたい場合の正解です。
Rick Westera、2016年

これにより、最初の文字が確実に大文字になりますが、残りの文字列が確実に小文字になるわけではありません。たとえば、「hello World」は「Hello world」ではなく「Hello World」になります。それは時々うまく
いき

はい、しかしこれはトピックスターターの質問には関係ありません。追加のロジックを処理するには、追加のフィルターを適用する必要があります。たとえば、@ bjorn-garciaは、最初の単語だけが大文字になるようにするためのソリューションを提供します。
oblalex

21

このソリューションは、複数の単語(たとえば、すべて大文字)がある場合にも機能します。

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

これは「すべて大文字の文」を出力します。


8

titleフィルタは、罰金を動作しますが、あなたのような多くのワード文字列を持っている場合:"some random text"、結果があることを行っています"Some Random Text"。文字列全体の最初の文字だけを大文字にしたい場合は、独自のカスタムフィルターを作成する必要があります。

次のようなフィルターを作成できます(このドキュメントからカスタムテンプレートフィルターを作成する方法の手順に従ってください-とても簡単です):

# 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

次に、テンプレートでmy_filtersファイルをロードし、そこで定義されているフィルターを使用する必要があります。

{% load my_filters %}

...
{{ myname|upfirstletter }}

1
反対票-既存の機能を複製|capfirst
shuckc 2018年

あなたはここにDjangoのデフォルトの実装を見ることができます:github.com/django/django/blob/master/django/template/...
phyatt

1

テンプレート変数で私のために働いた。

{{ user.username|title }}

ユーザーが「al hasib」の場合、「al Hasib」を返します

または

{{ user.username|capfirst }}

ユーザーが「hasib」の場合、最後のユーザーは「Hasib」を返します

どちらも同じように見えますが、いくつかの違いがあります。


0

{{myname | capfirst}} Djangoでテンプレートフィルターcapfirstを使用するだけで、与えられた文字列の最初の文字を大文字化します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.