web-dev-qa-db-fra.com

Mettez la première lettre en majuscule dans un template Django

Je tire un nom d'une base de données qui est stockée sous le nom myname. Comment puis-je l'afficher dans un modèle Django sous la forme Myname, avec la première lettre en majuscule.

90
Mayank

Utilisation du Django filtre de modèle intégré appelé titre

{{ "myname"|title }}
161
Aamir Adnan

Je sais que c'est un peu tard, mais vous pouvez utiliser capfirst :

{{ "waiting for action"|capfirst }}

Cela se traduira par "En attente d'action"

105
oblalex

Cette solution fonctionne également si vous avez plusieurs mots (par exemple, des majuscules):

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

Cela produira "All majuscule phrase".

9
Bjorn Garcia

Le filtre title fonctionne bien, mais si vous avez une chaîne de plusieurs mots comme: "some random text", le résultat va être "Some Random Text". Si vous souhaitez réellement mettre en majuscule uniquement la première lettre de la chaîne entière, vous devez créer votre propre filtre personnalisé.

Vous pouvez créer un filtre comme celui-ci (suivez les instructions pour créer un filtre de modèle personnalisé à partir de ceci doc - c'est assez 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

Ensuite, vous devez charger le fichier my_filters sur votre modèle et utiliser le filtre défini ici:

{% load my_filters %}

...
{{ myname|upfirstletter }}
8
Valdir Stumm Junior

Cela a fonctionné pour moi dans la variable de modèle.

{{ user.username|title }}

Si l'utilisateur est "al hasib", il retournera "Al Hasib"

ou

{{ user.username|capfirst }}

Si l'utilisateur est 'hasib', le dernier retournera "Hasib"

Les deux ressemblent à peu près à la même chose mais il y a quelques différences.

0
hasib