2

Google App Engine モデルなど:

from google.appengine.ext.db import Model

class M(Model):
    name = db.StringProperty()

次に、Django ビューから呼び出された Jinja2 テンプレートで、 in インスタンスをMas に渡しmます。

The name of this M is {{ m.name }}.

mを設定せずに初期化するとname、次のように表示されます。

このMの名前はNoneです。

望ましい期待される出力 (および Django テンプレートを使用した場合の出力) は次のようになります。

このMの名前は です。

なぜこれが起こっているのか、そして望ましい出力と期待される出力を得る方法を知っていますか?

4

3 に答える 3

14

Jinja2 の「または」の使用を検討することもできます...

The name of this M is {{ m.name or ''}}.

の場合bool(m.name) == False、これは表示されますThe name of this M is .


文字列「False」として表示する場合m.name == Falseは、Jinja2 の「デフォルト」フィルターを使用できます。

The name of this M is {{ m.name|default('') }}

の場合m.name is None、これは表示されますThe name of this M is .

の場合m.name == False、これは表示されますThe name of this M is False.


デフォルトのフィルターを使用したいが、False と評価されるものを定義済みのデフォルト値として表示する場合は、追加のパラメーターを追加します。

The name of this M is {{ m.name|default('', true) }}

これは とまったく同じ効果を持つはず{{ m.name or '' }}です。


この情報はすべて、Jinja2 の Builtin Filters リファレンスにあります。

于 2010-12-13T03:44:47.263 に答える
1

I think you hit upon the answer yourself. If you don't specify a name for that property, App Engine appears to store it as None, not "", so when it's printed, it gets printed as "None". Specify the default as "" and your problem goes away, like you said.

于 2010-04-23T13:59:06.910 に答える
1

空の文字列をデフォルト値にしたくない場合はどうすればよいでしょうか?

私はこの問題を抱えています。そこに空の文字列を入れたくありません。null/None/NoneType が必要です。それは空の文字列と同じではありません。

そこでもう一度皆さんに質問します --- Jinja は「None」を翻訳することを主張します。何を与える?

于 2010-11-14T18:57:36.503 に答える