python - 使用 jinja 在文档表中显示的附加行
问题描述
我编写了一个 jinja 代码,我想在其中将环境及其服务器添加到表中。期望的输出:
这是我的 Jinja 代码:
我的 python 代码,其中上下文中的服务器包括环境和属性列表,例如上下文中的服务器,下面将是['Qualif',["Tomcat",7,i," "," "," ",""]]
i 是服务器名称
doc = DocxTemplate("./word_excel_templates/documentation_template.docx")
context = {
'headers' : ['Component', 'Component Version', 'Server FQDN', 'Application port', 'DB SID', 'DB Port', 'Infos'],
'servers': []
}
server_1= ["Tomcat",7,i," "," "," ",""]
#put environment in context as required env
context['servers'].append(environment)
context['servers'].append(server_1)
doc.render(context)
doc.save("documentation_.docx")
现在这只是代码的一部分,我在上下文中的真正服务器是['Qualif',["Tomcat",7,i," "," "," ",""], 'Dev',["Tomcat",7,i," "," "," ",""]]
我得到的输出是这样的:
我对 Jinja 很陌生,所以我不知道为什么要在表格中添加这些额外的单元格。还有另一种方法可以做到这一点吗?
解决方案
这里实际发生的是,如果您的row is string
条件等于 false,则将这些行绘制为空。为了避免这种情况,您可以完全改变策略。我假设每个服务器都会有它的“环境”标签,如果是这样的话,首先,将你的 word 文档的格式更改为:
然后,调整你的context
结构如下:
context = {
'headers' : ['Component', 'Component Version', 'Server FQDN', 'Application port', 'DB SID', 'DB Port', 'Infos'],
'servers': []
}
server_1 = {}
server_1['environment'] = 'Qualif'
server_1['cols'] = ["Tomcat",7,'a',5000," ",200,""]
server_2 = {}
server_2['environment'] = 'Dev'
server_2['cols'] = ["Tomcat",7,'b',5000," ",200,""]
context['servers'].append(server_1)
context['servers'].append(server_2)
这样,产生的输出将是:
相反,如果您希望将多个服务器合二为一environment
,那么您应该调整上下文以使其具有类似的结构:
context = {
'headers' : ['Component', 'Component Version', 'Server FQDN', 'Application port', 'DB SID', 'DB Port', 'Infos'],
'servers':
{
"Qualif": [],
"Dev" : []
}
}
server_1 = ["Tomcat",7,'a',5000," ",200,""]
server_2 = ["Tomcat",7,'b',5000," ",200,""]
context['servers']['Qualif'].append(server_1)
context['servers']['Qualif'].append(server_2)
context['servers']['Dev'].append(server_1)
context['servers']['Dev'].append(server_2)
你的word文件如下:
这就是你最终会得到的:
推荐阅读
- angular - 角度验证字段
- javascript - 如何解析组件中返回的对象
- sql - 如何将 VBA 变量用于 MS-ACCESS 查询的 IN 'SourceDB' 子句
- html - Excel Web 插件不反映使用 Visual Studio 的任何更改
- r - 在 R 中模拟数据:在特定百分比的情况下要满足的条件
- javascript - 根据条件设置 CSS 属性
- string - 以负范围返回 Lua string.sub()?
- python - 将 x 和 y 值从 CSV 分配给 MatplotLib 散点图
- python - 使用 googletrans 批量翻译 Pandas 数据帧中的字符串
- java - Math.random() 函数在 for 循环中不起作用