2012-03-30 13 views
0

隠しフォームタグの値として渡される変数を含むmakoフォームがあります。何とか、変数が正しく渡されていません。このコードは以前から動作していましたが、生成されたHTMLは値を適切にレンダリングしません。Mako変数がピラミッドフォームに正しく渡されない

マココード:

<b>Create model at path</b>: ${ppath} 
<%def name="direct_load_model_form(method, ppath)"> 
${h.tags.form(method, multipart=True, method='post', hidden_fields=[('ppath', ppath)])} 
<b>Node Name: </b>${h.tags.text('node_name')}<BR> 
<b>Parameters: </b>${h.tags.file('params_file', size=100)}<BR> 
${h.tags.submit('submit', 'Create')} 
${h.tags.end_form()} 
</%def> 

${self.direct_load_model_form(process_route, ppath)} 

hidden_​​fields機能は、Webヘルパーライブラリからです。私の見解では、ppathppath = self.request.POST['ppath']として使用しようとしています。

変数ppathは、最初の行では正しく表示されますが、値として非表示フィールドに渡されたときは正しく表示されません。私は別の時間か何かからそれをエスケープする必要がありますか?

これは、レンダリングされたHTMLです:

<input type="hidden" value="" name="ppath"> 
+0

私はここのマコに問題はないと思います。おそらく、あなたの質問に明記していないフォームライブラリを使用する方法でしょう。あなたがデバッグするのを助けるために、あなたはどこかのdefで '$ {ppath}'を試すことができます。また、隠れた入力を直接書くこともできます: '' –

+0

私の質問が更新されました。以前はテンプレートコードが正常に動作していたと思います。私は隠れた入力を直接書くかもしれないと思うが、hidden_​​fieldsは複数の値を持つと便利な方法である。私はおそらく自分の方法を書くだろう。 – sutee

+0

実際にppathをテンプレートに渡している様子と使用しているウェブヘルパーのバージョンを確認できるように、単純化したビューコードを置くことはできますか? – BenTrofatter

答えて

1

をここでは、代わりにどこにでものppathを使用して、あなたはパスへのあなたのDEF機能でのppathの名前を変更することができ、あなたが試みることができるものです。

<b>Create model at path</b>: ${ppath} 

<%def name="direct_load_model_form(method, path)"> 
    ${h.tags.form(method, multipart=True, method='post', hidden_fields=[('ppath', path)])} 
    <b>Node Name: </b>${h.tags.text('node_name')}<BR> 
    <b>Parameters: </b>${h.tags.file('params_file', size=100)}<BR> 
    ${h.tags.submit('submit', 'Create')} 
    ${h.tags.end_form()} 
</%def> 

${self.direct_load_model_form(process_route, ppath)} 

それは問題になるかもしれないが、マコは、Pythonのコードを作成するので、それはどこかに、あなたの関数に送信されたパラメータが上書きされている可能性があります。 defがグローバル変数にアクセスできるので、どの変数を使うのかは不明だが、defを呼び出している間にリセットする。