2009-12-24 10 views
6

मैं बस सोच रहा हूं, क्या कोई स्ट्रिंग खाली है या नहीं, और फिर डिफ़ॉल्ट होने पर एक पायथन मुहावरे है?पायथन - आईडीआईओम यह जांचने के लिए कि क्या स्ट्रिंग खाली है, प्रिंट करें

(संदर्भ डीजेंगो है, __unicode__(self) उपयोगकर्ता प्रोफाइल के लिए फ़ंक्शन - मूल रूप से, मैं पहला नाम और अंतिम नाम मुद्रित करना चाहता हूं, यदि यह मौजूद है, और फिर उपयोगकर्ता नाम यदि दोनों मौजूद नहीं हैं)।

चीयर्स, विक्टर

उत्तर

4
displayname = firstname + lastname or username 

अगर firstname और अंतिम नाम 0 लंबाई खाली स्ट्रिंग

1

कुछ की तरह:

name = data.Name or "Default Name" 
2

ठीक है, मैं यह सोचते करती हूं कि आप __unicode__() मतलब काम करेंगे तरीका। कुछ इस तरह का प्रयास करें (नहीं परीक्षण किया है, लेकिन असली सही होने के करीब):

from django.utils.encoding import smart_unicode 
def __unicode__(self): 
    u = self.user 
    if u.firstname and u.lastname: 
     return u"%s %s" % (u.firstname, u.lastname) 
    return smart_unicode(u.username) 

मैं सिर्फ महसूस किया तुम अजगर मुहावरा, नहीं Django कोड मांगा। ओह अच्छा।

6
displayname = firstname+' '+lastname if firstname and lastname else username 
+1

मुझे यह करने के लिए हराया। +1 बच्चे! – jathanism

+0

+1 आप उत्तर मुझसे काफी दयालु हैं: पी – YOU

+0

मुझे एक + के साथ संगत स्ट्रिंग से नफरत है - यह पर्याप्त सुरक्षित नहीं है, खासकर उपयोगकर्ता और संपादन योग्य फ़ील्ड जैसे पहले और अंतिम नामों के लिए। – shawnr

0

मेरे स्कीमा, None एक सेट नहीं प्रथम या उपनाम के रूप में है, इसलिए Frederico के जवाब से काम नहीं होगा। तो:

print ("%s %s" % (firstname, lastname) 
     if not (firstname and lastname) 
     else username) 
4

मुझे लगता है कि इस मुद्दे की तरह कुछ के साथ टेम्पलेट्स में बेहतर संभाला है:

{{user.get_full_name | डिफ़ॉल्ट: user.username}}

का उपयोग करता है कि Django के शामिल "डिफ़ॉल्ट "फ़िल्टर करें। यदि आप विशेष रूप से किसी भी मूल्य के बारे में चिंतित हैं, तो "default_if_none" फ़िल्टर भी है, लेकिन रिक्त मान (यानी '') को अनुमति देना चाहते हैं। "डिफ़ॉल्ट" फ़िल्टर किसी भी मूल्य और '' मान दोनों पर ट्रिगर नहीं होगा।

यहाँ उस पर Django डॉक्स के लिए लिंक है: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

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