2013-01-10 16 views

答えて

114

title

{{ "myname"|title }} 
+0

これは機能しました!ありがとうAamir :) – Mayank

+0

あなたの歓迎、答えを受け入れることを忘れないでください。 –

+7

これは単一単語の文字列に有効です。しかし、複数の単語の文字列がある場合、文字列の最初の文字の代わりに、各単一の単語の最初の文字を上にします。 –

10

と呼ばtitleフィルタが正常に動作しますが、あなたのような多くのワード文字列がある場合:"some random text"を、結果は"Some Random Text"になるだろう。本当に望むものが大文字の場合は、文字列全体の最初の文字だけです。独自のカスタムフィルタを作成する必要があります。

あなたは(このdocからカスタムテンプレートフィルタを作成する方法についての指示に従ってください - それは非常に簡単です)、このようなフィルタを作成することができます。

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

をしていますが、使用することができcapfirst

{{ "waiting for action"|capfirst }} 

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

+3

最初の文字を大文字にしたい場合は、正解です。 –

+0

はい、これは例で示されています。 – oblalex

+0

これは、最初の文字が大文字であることを保証しますが、残りの文字列が小文字であることを保証するものではありません。例えば"hello world"は "Hello world"ではなく "Hello World"になります。常にうまくいくわけではありません。 –

関連する問題