2013-01-10 12 views
64

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

उत्तर

114

Django में निर्मित टेम्पलेट फिल्टर title

{{ "myname"|title }} 
+0

यह काम किया! धन्यवाद आमिर :) – Mayank

+0

आपका स्वागत है, उत्तर स्वीकार करने के लिए मत भूलना। –

+7

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

10

कहा जाता है का उपयोग कर 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 }} 
70

मैं जानता हूँ कि यह थोड़ी देर हो चुकी है, लेकिन आप उपयोग कर सकते हैं capfirst:

{{ "waiting for action"|capfirst }} 

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

+3

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

+0

हां, और यह उदाहरण में दिखाया गया है। – oblalex

+0

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

संबंधित मुद्दे