【问题标题】:Mako variable not being passed into pyramid form properlyMako 变量未正确传递到金字塔形式
【发布时间】:2012-03-30 22:49:19
【问题描述】:

我有一个 mako 表单,其中包含一个要作为隐藏表单标签的值传入的变量。不知何故,变量没有被正确传递。这段代码之前一直在工作,但现在生成的 html 无法正确呈现值。

魔子代码:

<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 函数来自网络助手库。在我看来,我正在尝试将ppath 用作ppath = self.request.POST['ppath']

ppath 变量在第一行中正确呈现,但在作为值传递给隐藏字段时不正确。我需要再次逃避它吗?

这是渲染的 html:

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

【问题讨论】:

  • 我认为问题不在于 Mako。这可能是您使用表单库的方式,您没有在问题中指定。为了帮助您调试,您可以在您的 def 某处尝试${ppath}。此外,您可以直接编写隐藏输入:&lt;input type="hidden" value="${ppath}" name="ppath"&gt;.
  • 我更新了我的问题。我很确定模板代码以前可以工作。我想我可以直接写隐藏输入,但是当我有多个值时, hidden_​​fields 是非常方便的方法。我可能会编写自己的方法。
  • 您能否提供一个简化版本的视图代码,以便我们了解您实际上是如何将 ppath 传递给模板并说明您使用的是哪个版本的 webhelper?
  • 你也可以发布预期的结果吗?

标签: python pyramid mako


【解决方案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 时会重置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2021-09-21
    相关资源
    最近更新 更多