장고 템플릿 내에서 첫 글자를 대문자로 만들기


113

으로 저장된 데이터베이스에서 이름을 가져오고 있습니다 myname. 장고 템플릿 안에 Myname첫 글자가 대문자 로 표시되는 방법은 무엇입니까 ?

답변:


205

제목 이라는 Django 기본 제공 템플릿 필터 사용

{{ "myname"|title }}

13
단일 단어 문자열에 대해 작동합니다. 그러나 여러 단어로 된 문자열이있는 경우 문자열의 첫 번째 문자 대신 각 단일 단어의 첫 번째 문자가 위쪽에 표시됩니다.
Valdir Stumm Junior

"내 친구의 집"또는 "당신은 대문자 괴물"과 같은 아포스트로피는 "Friend 'S"및 "You \ 'Re"가되는 경우 유용하지 않습니다.
Timo 2015 년

2
이 대답은 틀 렸습니다. | title은 문자열의 첫 글자를 대문자로 만들지 않습니다. 각 단어의 첫 글자를 대문자로 만듭니다. 예를 들어 "hello world"는 "Hello world"가되지 않습니다. "Hello World"가됩니다.
Marcus Lind 2015 년

9
{{obj | capfirst}}를 사용하여 첫 번째 문자 만 대문자로 만듭니다. {{obj | title}}은 Camel Case로 만듭니다.
Nrzonline

123

조금 늦었다는 것을 알고 있지만 capfirst 를 사용할 수 있습니다 .

{{ "waiting for action"|capfirst }}

그러면 "작업 대기 중"이됩니다.


8
첫 글자 만 대문자로 표시하려는 경우 정답입니다.
Rick Westera 2013 년

이렇게하면 첫 번째 문자가 대문자가되지만 나머지 문자열이 소문자인지는 확인할 수 없습니다. 예를 들어 "hello World"는 "Hello World"가 아닌 "Hello World"가됩니다. :) 어느 때로 괜찮지 만, 항상
필 Gyford

예, 그러나 이것은 주제 시작의 질문과 관련이 없습니다. 추가 로직을 처리하려면 추가 필터를 적용해야합니다. 예를 들어, @ bjorn-garcia는 첫 번째 단어 만 대문자로 표시하는 솔루션을 제공합니다.
oblalex

21

이 솔루션은 여러 단어 (예 : 모두 대문자)가있는 경우에도 작동합니다.

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

"All caps phrase"가 출력됩니다.


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
downvote-기존 기능 복제|capfirst
shuckc

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를 사용 하여 주어진 문자열의 첫 글자를 capatialize하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.