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.
Utilisation du Django filtre de modèle intégré appelé titre
{{ "myname"|title }}
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"
Cette solution fonctionne également si vous avez plusieurs mots (par exemple, des majuscules):
{{ "ALL CAPS SENTENCE"|lower|capfirst }}
Cela produira "All majuscule phrase".
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 }}
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.