在django模板中创建大写的第一个字母

时间:2013-01-10 22:20:57

标签: django django-templates

我从数据库中提取名称,该数据库存储为myname。如何在Django模板中将其显示为Myname,第一个字母为大写。

7 个答案:

答案 0 :(得分:157)

使用名为title

的Django内置模板过滤器
{{ "myname"|title }}

答案 1 :(得分:102)

我知道有点晚了,但您可以使用capfirst

{{ "waiting for action"|capfirst }}

这将导致“等待行动”

答案 2 :(得分:9)

title过滤器工作正常,但如果您有多个字符串,如:"some random text",则结果将为"Some Random Text"。如果你真正想要的是大写整个字符串的第一个字母,你应该创建自己的自定义过滤器。

你可以创建一个这样的过滤器(按照如何从这个doc创建自定义模板过滤器的说明 - 这很简单):

# 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

然后,您应该在模板中加载my_filters文件,并使用在那里定义的过滤器:

{% load my_filters %}

...
{{ myname|upfirstletter }}

答案 3 :(得分:7)

如果您有多个单词(例如全部大写),此解决方案也有效:

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

这将输出“All caps sentence”。

答案 4 :(得分:1)

它在模板变量中对我有用。

{{ user.username|title }}

如果用户为“ al hasib”,则它将返回“ Al Hasib”

{{ user.username|capfirst }}

如果用户为“ hasib”,则最后一个将返回“ Hasib”

两者看起来都一样,但有一些区别。

答案 5 :(得分:0)

只需使用{{myname | capfirst}} 在Django中,模板过滤器 capfirst 使给定字符串的首字母大写。

答案 6 :(得分:0)

使用 {{"myname"|title}} 这将使每个单词的第一个字母大写