Machen Sie den ersten Buchstaben in Großbuchstaben in einer Django-Vorlage

113

Ich ziehe einen Namen aus einer Datenbank, die als gespeichert ist myname. Wie zeige ich dies in einer Django-Vorlage als an Myname, wobei der erste Buchstabe in Großbuchstaben geschrieben ist?

Mayank
quelle

Antworten:

205

Verwenden des in Django integrierten Vorlagenfilters namens title

{{ "myname"|title }}
Aamir Adnan
quelle
13
Es funktioniert für Einzelwortzeichenfolgen. Wenn Sie jedoch eine Zeichenfolge mit mehreren Wörtern haben, wird der erste Buchstabe jedes einzelnen Wortes anstelle des ersten Buchstabens der Zeichenfolge angehoben.
Valdir Stumm Junior
Es ist jedoch nicht nützlich bei Apostrophen wie "Das Haus meines Freundes" oder "Du bist ein Freak in Großbuchstaben", was zu "Friend'S" und "You \ 'Re' wird.
Timo
2
Diese Antwort ist falsch. | title macht den ersten Buchstaben eines Strings nicht in Großbuchstaben. Es macht den ersten Buchstaben jedes Wortes in Großbuchstaben. Beispiel: "Hallo Welt" wird nicht zu "Hallo Welt". Es wird "Hallo Welt".
Marcus Lind
9
Verwenden Sie {{obj | capfirst}}, um Großbuchstaben nur als erstes Zeichen zu verwenden. Verwenden von {{obj | Titel}} macht es Camel Case.
Nrzonline
123

Ich weiß, dass es etwas spät ist, aber Sie können capfirst verwenden :

{{ "waiting for action"|capfirst }}

Dies führt zu "Warten auf Aktion"

Oblalex
quelle
8
Dies ist die richtige Antwort, wenn Sie nur den ersten Buchstaben groß schreiben möchten.
Rick Westera
Dadurch wird sichergestellt, dass das erste Zeichen in Großbuchstaben geschrieben ist, der Rest der Zeichenfolge jedoch nicht in Kleinbuchstaben. zB würde "Hallo Welt" zu "Hallo Welt", nicht zu "Hallo Welt". Was manchmal in Ordnung ist, aber nicht immer :)
Phil Gyford
Ja, aber das ist für die Frage des Themenstarters nicht relevant. Zusätzliche Filter müssen angewendet werden, um zusätzliche Logik zu verarbeiten. Zum Beispiel bietet @ bjorn-garcia eine Lösung, um sicherzustellen, dass nur das erste Wort groß geschrieben wird.
Oblalex
21

Diese Lösung funktioniert auch, wenn Sie mehrere Wörter haben (zum Beispiel alle Großbuchstaben):

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

Dies gibt "All Caps Satz" aus.

Björn Garcia
quelle
8

Der titleFilter funktioniert einwandfrei, aber wenn Sie eine Zeichenfolge mit vielen Wörtern wie: haben "some random text", wird das Ergebnis sein "Some Random Text". Wenn Sie wirklich nur den ersten Buchstaben der gesamten Zeichenfolge in Großbuchstaben schreiben möchten , sollten Sie einen eigenen benutzerdefinierten Filter erstellen.

Sie können einen Filter wie diesen erstellen (befolgen Sie die Anweisungen zum Erstellen eines benutzerdefinierten Vorlagenfilters aus diesem Dokument - es ist ganz einfach):

# 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

Anschließend sollten Sie die Datei my_filters in Ihre Vorlage laden und den dort definierten Filter verwenden:

{% load my_filters %}

...
{{ myname|upfirstletter }}
Valdir Stumm Junior
quelle
1
downvote - dupliziert vorhandene Funktionalität von|capfirst
shuckc
Sie können die Implementierung der Django-Standardeinstellungen hier sehen: github.com/django/django/blob/master/django/template/…
Phyatt
1

Es hat bei mir in der Vorlagenvariablen funktioniert.

{{ user.username|title }}

Wenn der Benutzer "al hasib" ist, gibt er "Al Hasib" zurück.

oder

{{ user.username|capfirst }}

Wenn der Benutzer 'hasib' ist, gibt der letzte "Hasib" zurück.

Beide sehen ungefähr gleich aus, aber es gibt einige Unterschiede.

hasib
quelle
0

Verwenden Sie einfach {{myname | capfirst}} In Django kapitialisiert der Vorlagenfilter zuerst den ersten Buchstaben einer bestimmten Zeichenfolge.

Amitha Mohan
quelle