ChatGPT解决这个技术问题 Extra ChatGPT

将 django 模板中的第一个字母大写

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


T
Tim Tisdall

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

{{ "myname"|title }}

它适用于单个单词的字符串。但是,如果你有一个多字串,它会在每个单词的第一个字母上,而不是字符串的第一个字母。
然而,像“我朋友的房子”或“你是一个大写的怪胎”这样的撇号没有用,它们变成了“朋友”和“你”。
这个答案是错误的。 |title 不会将字符串的第一个字母变为大写。它使每个单词的第一个字母大写。例如,“hello world”不会变成“Hello world”。它变成了“Hello World”。
使用 {{ 对象 | capfirst }} 仅将第一个字符设为大写。使用 {{ 对象 |标题 }} 使它成为骆驼案例。
p
powlo

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

{{ "waiting for action"|capfirst }}

这将导致“等待操作”


如果您只想将第一个字母大写,这是正确的答案。
这将确保第一个字符为大写,但不能确保字符串的其余部分为小写。例如,“hello World”会变成“Hello World”,而不是“Hello world”。有时很好,但并非总是如此:)
是的,但这与主题启动器的问题无关。必须应用额外的过滤器来处理额外的逻辑。例如,@bjorn-garcia 提供了一种确保只有第一个单词大写的解决方案。
B
Bjorn Garcia

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

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

这将输出“All caps sentence”。


V
Valdir Stumm Junior

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

downvote - 复制 |capfirst 的现有功能
您可以在此处查看 django 默认值的实现:github.com/django/django/blob/master/django/template/…
h
hasib

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

{{ user.username|title }}

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

或者

{{ user.username|capfirst }}

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

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


这是默认用法,这对我有用。谢谢
R
Rakesh Gombi

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


是的,这个过滤器有效。谢谢
A
Amitha Mohan

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