2009-12-24 28 views
6

Tôi chỉ tự hỏi, có thành ngữ Python nào để kiểm tra xem chuỗi có trống không và sau đó in mặc định nếu chuỗi đó là?Python - Thành ngữ để kiểm tra xem chuỗi có trống không, in mặc định

(Bối cảnh là Django, đối với chức năng __unicode__(self) cho UserProfile - về cơ bản, tôi muốn in tên và họ, nếu có, và sau đó tên người dùng nếu cả hai không tồn tại).

Chúc mừng, Victor

Trả lời

4
displayname = firstname + lastname or username 

sẽ làm việc nếu firstname và tên cuối cùng có 0 dài chuỗi trống

1

Cái gì như:

name = data.Name or "Default Name" 
2

Ok, tôi giả sử bạn có nghĩa là __unicode__() phương pháp. Hãy thử một cái gì đó như thế này (không được thử nghiệm, nhưng thực sự gần đúng):

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) 

Tôi vừa nhận ra bạn đã hỏi thành ngữ Python, chứ không phải mã Django. Oh well.

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

đánh bại tôi vào nó. 1 em bé! – jathanism

+0

+1 Bạn trả lời đủ tốt hơn tôi: P – YOU

+0

Tôi ghét ghép các chuỗi bằng dấu + - không đủ an toàn, đặc biệt là đối với trường người dùng có thể chỉnh sửa như tên và họ. – shawnr

0

Giản đồ của tôi sẽ có None dưới dạng chưa đặt đầu tiên hoặc họ, do đó câu trả lời của Frederico sẽ không hoạt động. Vì vậy:

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

Tôi nghĩ rằng vấn đề này là xử lý tốt hơn trong các mẫu với cái gì đó như:

{{user.get_full_name | mặc định: user.username}}

Đó sử dụng của Django bao gồm "mặc định "bộ lọc. Cũng có bộ lọc "default_if_none" nếu bạn đặc biệt quan tâm đến giá trị Không có, nhưng muốn cho phép một giá trị trống (tức là ''). Bộ lọc "mặc định" sẽ kích hoạt trên cả giá trị Không có và giá trị ''.

Dưới đây là các liên kết đến các tài liệu Django trên đó: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

Các vấn đề liên quan