2012-04-09 10 views
0

私はMakoテンプレートでPyramid 1.3を使用しています。空の辞書をテンプレートに返す「作成」というメソッドを持つビューがあります。私は、作成と編集の両方に同じ "create.mako"テンプレートを使用するつもりです。私は私の入力フィールドに、このようなようなコンテキスト変数を入れている:未定義makoテンプレートエラー

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

は、これに伴う問題は、私が作成したメソッドをロードしようとしたとき、私は以下のようなエラーが出ていることである:

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

これは、もちろん正しいのは、createメソッドが空の辞書のみを返し、キーの "content"を持たないからです。これはPylons 0.9.7では正常でした。存在しなければ空の文字列になります。

私はStackOverflowのから解決策が見つかりました:

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

をしかし、ここで私は私のピラミッドのプロジェクトでこれを置けばいいの?

答えて

2

いつも同じ辞書をテンプレートに返さないのはなぜですか?それは、(結局のところ)あなたのテンプレートの予想される入力です。サイレントに問題を無視しないと、テンプレートの潜在的なエラーを回避するのに役立ちます。もちろん、ビュー間でこれらのことを抽象化することもできます。

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

def create_view(request): 
    return _create_tmpl() 

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

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