Зробіть першу букву у верхньому регістрі всередині шаблону джанго


113

Я витягую ім'я з бази даних, яка зберігається як myname. Як відобразити це всередині шаблону Django як Myname, коли перша літера є великою літерою.

Відповіді:


205

Використання вбудованого фільтра шаблонів Django під назвою title

{{ "myname"|title }}

13
Він працює для однословних рядків. Але, якщо у вас є рядок з декількома словами, вона перевершить першу букву кожного окремого слова замість першої літери рядка.
Вальдір Штумм Юніор

Це не корисно з апострофами на кшталт "Будинок мого друга" або "Ви чудовий вирод", який стає "Друг'S" і "Ти \" Re ".
Тимо

2
Ця відповідь неправильна. | title не робить першу букву верхнього регістру рядка. Він робить першу букву кожного верхнього регістру кожного слова. Наприклад, "привіт світ" не стає "Привіт світ". Це стає "Hello World".
Маркус Лінд

9
Використовуйте {{obj | capfirst}}, щоб зробити верхній регістр лише першим символом. Використовуючи {{obj | назва}} робить це справою верблюда.
Nrzonline

123

Я знаю, що це трохи пізно, але ви можете використовувати capfirst :

{{ "waiting for action"|capfirst }}

Це призведе до "Очікування дії"


8
Це правильна відповідь, якщо ви просто хочете, щоб перша літера була написана з великої літери.
Рік Вестера

Це забезпечить перший символ великим регістром, але не забезпечить решту рядка з малих літер. наприклад, "Hello World" стане "Hello World", а не "Hello world". Що іноді чудово, але не завжди :)
Філ Гіфорд

Так, але це не стосується питання стартера теми. Для обробки додаткової логіки потрібно застосувати додаткові фільтри. Наприклад, @ bjorn-garcia пропонує рішення про те, щоб забезпечити використання великої літери лише першого слова.
oblalex

21

Це рішення також працює, якщо у вас є кілька слів (наприклад, усі літери):

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

Це виведе "Усі речення великої літери".


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

1
downvote - дублює існуючу функціональність|capfirst
shuckc

Ви можете ознайомитись із застосуванням значень за замовчуванням django тут: github.com/django/django/blob/master/django/template/…
phyatt

1

Він працював для мене у змінній шаблону.

{{ user.username|title }}

Якщо користувач "al hasib", то він поверне "Al Hasib"

або

{{ user.username|capfirst }}

Якщо користувач - "hasib", то останній поверне "Hasib"

Обидва виглядають приблизно так само, але є деякі відмінності.


0

Просто використовуйте {{myname | capfirst}} In Django шаблон фільтра capfirst, щоб прописати першу букву заданого рядка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.