如何在django中将python字典动态输出到html?

Posted

技术标签:

【中文标题】如何在django中将python字典动态输出到html?【英文标题】:How to dynamically output python dictionary to html in django? 【发布时间】:2018-08-08 17:15:20 【问题描述】:

这是我从套接字动态获取的数据,我想用 django 将其显示在一个表格中,例如 html 中的键和值。

Received: 
'power': 'ON', 'mode': 'AUTOMATIC', 'execution': 'ACTIVE', 'Xact': '235.70', 'Yact': '1468.86', 'Zact': '1.27', 'Xcom': '0.00', 'Ycom': '0.00', 'Zcom': '0.00', 'path_feedrate': '0.00', 'line': '1136849', 'Block': '1136849', 'program': '37262 S1 - .75 JET_imported_CNC.ORD\n'
'comms': 'NORMAL', '': '\n2018-08-08T17:11:51.0384', 'Sspeed': '60000.00\n'
'line': '1136860', 'Block': '1136860\n'
'Xact': '236.17', 'Xcom': '909.70', 'path_feedrate': '909.70\n'
'Xcom': '0.00', 'path_feedrate': '0.00', 'line': '1136872', 'Block': '1136872\n'
'line': '1136883', 'Block': '1136883\n'
'line': '1136895', 'Block': '1136895\n'
'line': '1136906', 'Block': '1136906\n'
'Xact': '236.52', 'Xcom': '677.44', 'path_feedrate': '677.44\n'
'Xcom': '0.00', 'path_feedrate': '0.00', 'line': '1136918', 'Block': '1136918\n'
'line': '1136929', 'Block': '1136929\n'
'line': '1136941', 'Block': '1136941\n'

还有更多输出.....

我试过用这个,但是没用。

% block content %
<table>
    % for key, value in devDict.items() %
    <tr>
        <td> key </td>
        <td> value </td>
    </tr>
    % endfor %
</table>
% endblock content %

% block js %
<script type="text/python3" src="% static 'widgets/python/mtconnect.py'%"></script>
% endblock js %

这是我的 python 脚本,这就是我获取数据的方式:

import socket

HOST = "myHOST"
PORT = myPORT
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    buffer_size = 2048
    print("Received: ")
    while True:
        devData = s.recv(buffer_size).decode("utf-8").split("|")
        timeStamp = devData.pop(0)
        devDict = dict(zip(*([iter(devData)]*2)))
        print(devDict)
s.close()

【问题讨论】:

你尝试过的结果是什么? 当我尝试使用 django 进行循环时没有输出。但是当我只是运行我的 python 代码时,它会给我上面的输出 .items() 是正确的。不是.items .items() 不正确,因为我收到此错误:无法解析余数:'()' from 'devDict.items()' 如果你正在加载一个网页,那么任何可用的数据都应该打印到表格中,然后静态渲染并传递给客户端。如果数据在两次之间发生变化,则页面不会在没有处理实时变化的额外代码的情况下发生变化。 【参考方案1】:

看起来您收到了一个字典列表,首先您需要遍历该列表。喜欢:

<table>
    % for line in devDict %
    <tr>
        % for key, value in line.items %
                <td> key </td>
                <td> value </td>
        % endfor %
    </tr>
    % endfor %
</table>

【讨论】:

【参考方案2】:

我面临的问题是无法将数据从套接字渲染到浏览器,因为有两种不同的协议。我必须首先在它们之间建立一座桥梁,从套接字到 websocket。我通过使用:https://github.com/yankov/webtcp 做到了这一点。然后我能够将数据从套接字渲染到浏览器。

【讨论】:

以上是关于如何在django中将python字典动态输出到html?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中将变量传入和传出函数[重复]

Python:查询字典到 JSON

如何在python,dataframe中将数据转换为嵌套字典

如何在python中将一对添加到字典中?

如何在 Xcode 项目中将字典数组写入 .txt 文件

如何在 python3 中将 OrderedDict 转换为常规字典