6

文字列が空であるかどうかを確認し、空である場合はデフォルトを出力する Python イディオムはありますか?

(UserProfileの関数のコンテキストはDjango__unicode__(self)です-基本的に、存在する場合は名と姓を出力し、両方が存在しない場合はユーザー名を出力します)。

乾杯、ビクター

4

6 に答える 6

6
displayname = firstname+' '+lastname if firstname and lastname else username
于 2009-12-24T01:38:35.640 に答える
4
displayname = firstname + lastname or username

名と姓の長さが 0 の空白文字列の場合に機能します

于 2009-12-24T01:30:44.600 に答える
4

この問題は、次のようなテンプレートでより適切に処理できると思います。

{{ user.get_full_name|デフォルト:user.username }}

これは、Django に含まれている「デフォルト」フィルターを使用します。特に None 値に関心があるが、空白の値 (つまり '') を許可したい場合は、"default_if_none" フィルターもあります。「デフォルト」フィルターは、None 値と '' 値の両方でトリガーされます。

Django ドキュメントへのリンクは次のとおりです: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

于 2009-12-24T17:26:08.910 に答える
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 コードではなく、Python のイディオムを求めていることに気付きました。しかたがない。

于 2009-12-24T01:31:27.723 に答える
1

何かのようなもの:

name = data.Name or "Default Name"
于 2009-12-24T01:30:37.243 に答える
0

私のスキーマではNone姓または名が設定されていないため、フレデリコの答えは機能しません。そう:

print ("%s %s" % (firstname, lastname)
       if not (firstname and lastname) 
       else username )
于 2009-12-24T02:15:36.453 に答える