एक django टेम्पलेट के अंदर पहला अक्षर अपरकेस बनाएं


113

मैं एक डेटाबेस से एक नाम खींच रहा हूं जो कि संग्रहीत है myname। मैं इसे Django टेम्प्लेट के अंदर कैसे दिखाता हूं Myname, जैसा कि पहला अक्षर अपरकेस में है।

जवाबों:


205

Django बिल्ट-इन टेम्पलेट फ़िल्टर का उपयोग करके शीर्षक

{{ "myname"|title }}

13
यह सिंगल-वर्ड स्ट्रिंग्स के लिए काम करता है। लेकिन, यदि आपके पास एक बहु-शब्द स्ट्रिंग है, तो यह स्ट्रिंग के पहले अक्षर के बजाय प्रत्येक एकल शब्द के पहले अक्षर को ऊपरी करने जा रहा है।
वल्दिर स्टम जूनियर

यह "मेरे दोस्त के घर" या "आप एक बड़े सनकी हैं" जैसे एपोस्ट्रोफ के साथ उपयोगी नहीं है, जो कि "फ्रेंड्स" और 'यू' 'रे' बन जाता है।
तिमो

2
यह उत्तर गलत है। | शीर्षक एक स्ट्रिंग अपरकेस का पहला अक्षर नहीं बनाता है। यह प्रत्येक शब्द का पहला अक्षर अपरकेस बनाता है। उदाहरण, "हैलो वर्ल्ड" "हैलो वर्ल्ड" नहीं बनता है। यह "हैलो वर्ल्ड" बन जाता है।
मार्कस लिंड

9
{{Obj | केवल वर्ण बनाने के लिए capfirst}}। {{Obj | शीर्षक}} इसे कैमल केस बनाता है।
Nrzonline

123

मुझे पता है कि थोड़ी देर हो चुकी है, लेकिन आप कैफफर्स्ट का उपयोग कर सकते हैं :

{{ "waiting for action"|capfirst }}

यह "कार्रवाई की प्रतीक्षा में" परिणाम होगा


8
यह सही उत्तर है यदि आप केवल पहले अक्षर को पूंजीकृत करना चाहते हैं।
रिक वेस्टेरा

यह सुनिश्चित करेगा कि पहला चरित्र अपरकेस है, लेकिन यह सुनिश्चित नहीं करेगा कि शेष स्ट्रिंग कम है। जैसे "हैलो वर्ल्ड" "हैलो वर्ल्ड" बन जाएगा, "हैलो वर्ल्ड" नहीं। जो कभी-कभी ठीक है, लेकिन हमेशा नहीं :)
फिल गिफोर्ड

हां, लेकिन यह विषय स्टार्टर के प्रश्न के लिए प्रासंगिक नहीं है। अतिरिक्त तर्क को संभालने के लिए अतिरिक्त फ़िल्टर लागू होने चाहिए। उदाहरण के लिए, @ ब्योर्न-गार्सिया केवल यह सुनिश्चित करने के लिए एक समाधान प्रदान करता है कि पहला शब्द पूंजीकृत है।
9

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

यदि उपयोगकर्ता "अल हसीब" है तो यह "अल हसीब" लौटाएगा

या

{{ user.username|capfirst }}

यदि उपयोगकर्ता 'हसीब' है तो अंतिम "हसीब" लौटाएगा

दोनों कुछ समान दिखते हैं लेकिन कुछ अंतर हैं।


0

सिर्फ {{myname | capfirst}} Django में टेम्प्लेट फ़िल्टर कैपफर्स्ट किसी दिए गए स्ट्रिंग के पहले अक्षर को कैपिटल करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.