我有一个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帮助程序库。在我的观看中,我尝试将ppath
用作ppath = self.request.POST['ppath']
。
ppath
变量在第一行中正确呈现,但在作为隐藏字段的值传递时则不会。我需要再次逃避它吗?
这是呈现的html:
<input type="hidden" value="" name="ppath">
答案 0 :(得分:1)
这是您可以尝试的内容,而不是在任何地方使用ppath,您可以将def函数中的ppath重命名为path。
<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)}
这可能是一个问题,但由于mako创建了python代码,因此可能在某处,发送到您的函数的参数被覆盖。那说不清楚它将使用哪个变量,因为defs可以访问全局变量,但你在调用def时重置。