ฉันกำลังดึงชื่อจากฐานข้อมูลที่จัดเก็บเป็นmyname
ไฟล์. ฉันจะแสดงสิ่งนี้ภายในเทมเพลต Django ได้Myname
อย่างไรโดยที่ตัวอักษรตัวแรกจะเป็นตัวพิมพ์ใหญ่
ฉันกำลังดึงชื่อจากฐานข้อมูลที่จัดเก็บเป็นmyname
ไฟล์. ฉันจะแสดงสิ่งนี้ภายในเทมเพลต Django ได้Myname
อย่างไรโดยที่ตัวอักษรตัวแรกจะเป็นตัวพิมพ์ใหญ่
คำตอบ:
การใช้ตัวกรองเทมเพลตในตัว Django ที่เรียกว่าtitle
{{ "myname"|title }}
ฉันรู้ว่ามันช้าไปหน่อย แต่คุณสามารถใช้capfirst :
{{ "waiting for action"|capfirst }}
ซึ่งจะส่งผลให้เป็น "กำลังรอการดำเนินการ"
วิธีนี้ยังใช้งานได้หากคุณมีหลายคำ (เช่นตัวพิมพ์ใหญ่ทั้งหมด):
{{ "ALL CAPS SENTENCE"|lower|capfirst }}
สิ่งนี้จะแสดงผล "ประโยคตัวพิมพ์ใหญ่ทั้งหมด"
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 }}
|capfirst
มันใช้ได้กับฉันในตัวแปรเทมเพลต
{{ user.username|title }}
หากผู้ใช้เป็น "al hasib" ระบบจะส่งคืน "Al Hasib"
หรือ
{{ user.username|capfirst }}
หากผู้ใช้เป็น 'hasib' ตัวสุดท้ายจะส่งคืน "Hasib"
ทั้งสองมีลักษณะเหมือนกัน แต่มีความแตกต่างบางประการ
เพียงใช้{{myname | capfirst}}
ใน Django ตัวกรองเทมเพลตcapfirst capatialize อักษรตัวแรกของสตริงที่กำหนด