【问题标题】:Loop in dictionary in HTML在 HTML 中的字典中循环
【发布时间】:2013-10-30 18:36:06
【问题描述】:

我有一个 Python 脚本创建一个字典并将其传递给一个 html 页面以生成报告。

在 Python 中:

data_query= {}
data_query["service1"] = "value1"
data_query["service2"] = "value2"
return data_query

在 HTML 中:

% for name, count in data_query:
<tr>
<td>${name}</td>
<td>${count}</td>
</tr>
% endfor

它不起作用,说它没有返回足够的值。

我也试过(在另一个问题的评论中指出,我错误地删除了):

% for name, count in dict.iteritems():

它没有给出任何错误,但不起作用。什么都不显示。

${len(dict)}

给出正确的字典长度

${len(dict.iteritems())}

不显示任何内容,似乎对我的表格格式产生了奇怪的影响。

有没有办法在 HTMl 中正确地迭代字典以显示键和值?

编辑:我如何将字典传输到 html 页面。

from mako.lookup import TemplateLookup
from mako.runtime import Context
from mako.exceptions import text_error_template

html_lookup = TemplateLookup(directories=[os.path.join(self.dir_name)])
html_template = html_lookup.get_template('/templates/report.html')
html_data = { 'data_queries' : data_queries }
html_ctx = Context(html_file, **html_data)
try:
    html_template.render_context(html_ctx)
except:
    print text_error_template().render(full=False)
    html_file.close()
    return
html_file.close()

【问题讨论】:

  • 首先,我建议你使用不同的变量名而不是dict
  • 抱歉,dict 用于此处的代码,以明确这是字典。真实姓名是data_query
  • Python 代码和 HTML 是如何通信的?是否涉及某种框架?
  • 您使用什么模板语言?另外,后端发送的数据如何>?
  • 我现在感觉很愚蠢... iteritems() 工作正常,我只是在格式上犯了一个错误...

标签: python html loops dictionary


【解决方案1】:
% for name, count in dict.items:
<tr>
<td>${name}</td>
<td>${count}</td>
</tr>
% endfor

应该可以工作...通常当您将 fn 传递给模板语言时您不会调用它...或者

% for name in dict:
<tr>
<td>${name}</td>
<td>${dict[name]}</td>
</tr>
% endfor

可能也有用

顺便说一句... dict 是一个可怕的变量名,因为它会影响内置 dict(如果这实际上是您的变量名,这可能是您的问题的一部分)

【讨论】:

  • 我在传输到模板的数据中犯了一个错误,因此 .iteritems() 正在工作。但是,.items 也可以。
  • 测试时它只是在 dict: 中打印出 % for name 的信息和 % endfor,但不是作为表格?它无法识别循环。
  • 另外 $ dont work 打印 ${name} 等。可能是版本问题?
猜你喜欢
  • 2022-11-17
  • 2021-05-23
  • 1970-01-01
  • 2018-02-22
  • 2016-12-29
  • 2021-07-16
相关资源
最近更新 更多