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

May*_*ank 98 django django-templates

我从存储为的数据库中提取名称myname.我如何在Django模板中显示这个Myname,第一个字母是大写的.

Aam*_*nan 176

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

{{ "myname"|title }}
Run Code Online (Sandbox Code Playgroud)

  • 它适用于单字符串.但是,如果你有一个多字的字符串,它会高出每个单词的第一个字母,而不是字符串的第一个字母. (10认同)
  • 使用{{obj | capfirst}}只使大写字母成为第一个字符.使用{{obj | title}}使它成为Camel Case. (9认同)
  • 这个答案是对的.| title不会使字符串的第一个字母为大写.它使每个单词的首字母大写.例如,"hello world"不会成为"Hello world".它变成了"Hello World". (2认同)

obl*_*lex 112

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

{{ "waiting for action"|capfirst }}
Run Code Online (Sandbox Code Playgroud)

这将导致"等待行动"

  • 如果您只想将首字母大写,那么这是正确的答案. (8认同)
  • 这将确保第一个字符为大写,但不能确保字符串的其余部分为小写。例如“hello World”将变成“Hello World”,而不是“Hello world”。有时这很好,但并不总是:) (3认同)

小智 14

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

{{ "ALL CAPS SENTENCE"|lower|capfirst }}
Run Code Online (Sandbox Code Playgroud)

这将输出"全部大写句子".


Val*_*ior 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
Run Code Online (Sandbox Code Playgroud)

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

{% load my_filters %}

...
{{ myname|upfirstletter }}
Run Code Online (Sandbox Code Playgroud)

  • downvote - 重复 `|capfirst` 的现有功能 (3认同)

has*_*sib 6

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

{{ user.username|title }}
Run Code Online (Sandbox Code Playgroud)

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

或者

{{ user.username|capfirst }}
Run Code Online (Sandbox Code Playgroud)

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

两者看起来很相似,但也有一些区别。


Rak*_*mbi 5

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