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?

Antworten:


205

Verwenden des in Django integrierten Vorlagenfilters namens title

{{ "myname"|title }}

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"


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.


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 }}

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.


0

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.