0

Mako テンプレートで Pyramid 1.3 を使用しています。空の辞書をテンプレートに返す「create」というメソッドを含むビューがあります。作成と編集の両方で同じ「create.mako」テンプレートを使用するつもりです。入力フィールドに次のようなコンテキスト変数を配置しました。

<input type="text" id="nameInput" value="${content['name']}" />

これに関する問題は、create メソッドをロードしようとすると、次のようなエラーが発生することです。

<input id="nameInput" value="${content['name']}" type="text" class="span8" style="background-color: #EED3D7;" />
TypeError: 'Undefined' object is unsubscriptable

create メソッドは空の辞書のみを返し、キー「コンテンツ」を持たないため、これはもちろん正しいです。これは Pylons 0.9.7 では問題ありませんでした。存在しない場合は空の文字列になります。

StackOverflow から解決策を見つけました:

import mako.runtime
mako.runtime.UNDEFINED = ''

しかし、これを Pyramid プロジェクトのどこに置くのでしょうか?

4

1 に答える 1

2

毎回同じ dict をテンプレートに返さないのはなぜですか? それは(結局のところ)テンプレートの期待される入力です。問題を黙って無視しないと、テンプレートの潜在的なエラーを回避するのに非常に役立ちます。もちろん、ビュー全体でこれらのものを抽象化できます。

def _create_tmpl(name='', ...):
    return {
        'name': name,
    }

def create_view(request):
    return _create_tmpl()

def edit_view(request):
    return _create_tmpl(name='Mark')

とにかく、本当に本当にしたい場合は、設定に追加するだけです (おそらく INI に) mako.strict_undefined = false

于 2012-04-09T14:13:05.727 に答える