Convierte la primera letra en mayúscula dentro de una plantilla de django

113

Extraigo un nombre de una base de datos que se almacena como myname. ¿Cómo muestro esto dentro de una plantilla de Django como Myname, con la primera letra en mayúsculas?

Mayank
fuente

Respuestas:

205

Usando el filtro de plantilla incorporado de Django llamado título

{{ "myname"|title }}
Aamir Adnan
fuente
13
Funciona para cadenas de una sola palabra. Pero, si tiene una cadena de varias palabras, se colocará en la parte superior de la primera letra de cada palabra, en lugar de la primera letra de la cadena.
Valdir Stumm Junior
Sin embargo, nunca es útil con apóstrofos como "La casa de mi amigo" o "eres un fanático de las mayúsculas", que se convierte en "Friend'S" y "You \ 'Re".
Timo
2
Esta respuesta es incorrecta. | title no convierte la primera letra de una cadena en mayúscula. Hace que la primera letra de cada palabra sea mayúscula. Por ejemplo, "hola mundo" no se convierte en "hola mundo". Se convierte en "Hola mundo".
Marcus Lind
9
Utilice {{obj | capfirst}} para convertir en mayúsculas solo el primer carácter. Usando {{obj | title}} lo convierte en Camel Case.
Nrzonline
123

Sé que es un poco tarde, pero puedes usar capfirst :

{{ "waiting for action"|capfirst }}

Esto resultará en "Esperando acción"

oblalex
fuente
8
Esta es la respuesta correcta si solo desea que la primera letra esté en mayúscula.
Rick Westera
Esto asegurará que el primer carácter esté en mayúsculas, pero no asegurará que el resto de la cadena esté en minúsculas. por ejemplo, "hola mundo" se convertiría en "Hola mundo", no "Hola mundo". Lo que a veces está bien, pero no siempre :)
Phil Gyford
Sí, pero esto no es relevante para la pregunta del tema de inicio. Deben aplicarse filtros adicionales para manejar la lógica adicional. Por ejemplo, @ bjorn-garcia proporciona una solución para garantizar que solo se escriba en mayúscula la primera palabra.
oblalex
21

Esta solución también funciona si tiene varias palabras (por ejemplo, todas en mayúsculas):

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

Esto generará una "oración en mayúsculas".

Bjorn García
fuente
8

El titlefiltro funciona bien, pero si tiene una cadena de muchas palabras como:, "some random text"el resultado será "Some Random Text". Si lo que realmente desea es poner en mayúscula solo la primera letra de toda la cadena, debe crear su propio filtro personalizado.

Puede crear un filtro como este (siga las instrucciones sobre cómo crear un filtro de plantilla personalizado de este documento ; es bastante simple):

# 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

Luego, debe cargar el archivo my_filters en su plantilla y usar el filtro definido allí:

{% load my_filters %}

...
{{ myname|upfirstletter }}
Valdir Stumm Junior
fuente
1
|capfirst
voto negativo
Puede ver la implementación de los valores predeterminados de django aquí: github.com/django/django/blob/master/django/template/…
phyatt
1

Me funcionó en la variable de plantilla.

{{ user.username|title }}

Si el usuario es "al hasib", devolverá "Al Hasib".

o

{{ user.username|capfirst }}

Si el usuario es 'hasib', el último devolverá "Hasib"

Ambos se parecen a lo mismo, pero hay algunas diferencias.

hasib
fuente
0

Simplemente use {{myname | capfirst}} En Django el filtro de plantilla capfirst capatialize la primera letra de una cadena dada.

Amitha Mohan
fuente