【发布时间】:2012-12-25 10:55:52
【问题描述】:
我正在从存储为myname 的数据库中提取一个名称。如何在 Django 模板中将其显示为Myname,第一个字母为大写。
【问题讨论】:
我正在从存储为myname 的数据库中提取一个名称。如何在 Django 模板中将其显示为Myname,第一个字母为大写。
【问题讨论】:
使用名为title的Django内置模板过滤器
{{ "myname"|title }}
【讨论】:
【讨论】:
如果您有多个单词(例如全部大写),此解决方案也适用:
{{ "ALL CAPS SENTENCE"|lower|capfirst }}
这将输出“All caps sentence”。
【讨论】:
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 }}
【讨论】:
|capfirst的现有功能
它在模板变量中对我有用。
{{ user.username|title }}
如果用户是“al hasib”,那么它将返回“Al Hasib”
或
{{ user.username|capfirst }}
如果用户是“hasib”,那么最后一个将返回“Hasib”
两者看起来相似,但有一些不同。
【讨论】:
使用
{{"myname"|title}}
这将使每个单词的第一个字母大写
【讨论】:
只需使用{{myname | capfirst}}
在 Django 中,模板过滤器 capfirst 将给定字符串的第一个字母大写。
【讨论】: