2013-01-10 14 views

Antwort

114

Arbeiten mit Django integrierte Template-Filter title

{{ "myname"|title }} 
+0

Das hat funktioniert! Danke Aamir :) – Mayank

+0

Ihre Begrüßung, vergessen Sie nicht, die Antwort zu akzeptieren. –

+7

Es funktioniert für Einzelwort-Strings. Wenn Sie jedoch eine Zeichenfolge mit mehreren Wörtern haben, wird der erste Buchstabe jedes einzelnen Wortes anstelle des ersten Buchstabens der Zeichenfolge angezeigt. –

10

Die title Filter funktionieren gut genannt, aber wenn man ein viele Worte Zeichenfolge wie hat: "some random text", wird das Ergebnis geht "Some Random Text" sein. Wenn das, was Sie wirklich wollen, ist nur der erste Buchstabe der gesamten Zeichenfolge Großbuchstaben, sollten Sie Ihren eigenen benutzerdefinierten Filter erstellen.

Sie könnten einen Filter wie folgt erstellen (folgen Sie den Anweisungen, wie ein eigenes Template Filter aus dieser doc zu schaffen - 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 

Dann sollten Sie die my_filters Datei auf Ihrer Vorlage laden und die Filter dort definiert verwenden:

{% load my_filters %} 

... 
{{ myname|upfirstletter }} 
70

ich weiß, dass es ein bisschen spät, aber Sie können verwenden capfirst:

{{ "waiting for action"|capfirst }} 

Dies führt zu "Warten auf Aktion"

+3

Dies ist die richtige Antwort, wenn Sie nur den ersten Großbuchstaben verwenden möchten. –

+0

Ja, und dies wird im Beispiel gezeigt. – oblalex

+0

Dadurch wird sichergestellt, dass das erste Zeichen in Großbuchstaben geschrieben ist. Es wird jedoch nicht sichergestellt, dass der Rest der Zeichenfolge in Kleinbuchstaben geschrieben ist. z.B. "Hallo Welt" würde "Hallo Welt", nicht "Hallo Welt" werden. Was manchmal gut ist, aber nicht immer :) –

Verwandte Themen