143

我从存储为myname. 如何在 Django 模板中将其显示为Myname,第一个字母为大写。

4

7 回答 7

261

使用名为title的 Django 内置模板过滤器

{{ "myname"|title }}
于 2013-01-10T22:23:06.837 回答
158

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

{{ "waiting for action"|capfirst }}

这将导致“等待操作”

于 2013-05-24T08:29:11.103 回答
27

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

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

这将输出“All caps sentence”。

于 2018-03-19T11:52:26.727 回答
8

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

您可以像这样创建一个过滤器(按照有关如何从此文档创建自定义模板过滤器的说明进行操作- 这很简单):

# 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 }}
于 2013-01-11T02:48:38.233 回答
4

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

{{ user.username|title }}

如果用户是“al hasib”,那么它将返回“Al Hasib”

或者

{{ user.username|capfirst }}

如果用户是“hasib”,那么最后一个将返回“Hasib”

两者看起来都一样,但有一些不同。

于 2019-08-20T13:39:21.993 回答
3

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

于 2021-07-28T16:07:12.690 回答
2

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

于 2020-05-07T07:33:37.570 回答