gpt4 book ai didi

python - 解析 QueryDict 数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:54 27 4
gpt4 key购买 nike

django 的新手,我正在运行 python 脚本来获取数据并喜欢在 HTML 表格标签中显示。 Python 脚本运行并收集以下数据:

[{'Device': 'device01', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 1111, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}, {'Device': 'device02', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 2222, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}]

当在 view.py 中运行 Django 中的 python 脚本时,我将输出存储在以下位置:

if form.is_valid():
## Python script GatherData file
output = gatherdata(location)
data = QueryDict(output, mutable=True)
## Dict format to fetch
context = {'location': location, 'data': data }

使用 QueryDict 的原因是 python 的输出到 dict 值中作为 data 添加字符串,例如:

{'location': 'DC1', 'data': b"[{'Device': ... '}]\n"} 

无法从 data 获取数据这是使用 QueryDict 的输出,如下所示:

<QueryDict: {"[{'Device': 'device01', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 1111, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}, {'Device': 'device02', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 2222, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}]\n": ['']}>

上面解释了,如何将给定数据的值解析为html模板

以上,感谢您的意见和建议。

我已经尝试过 json.loads(output) 但遇到了错误。我试过 data = literal_eval(context['data']) 来删除字符串。

我已经更新了下面的猜测,为了通过 HTML 呈现,我已经厌倦了,但是没有得到任何数据

      <tbody>
{% for i in qd %}
<tr class='clickable-row' data-href='/details/'>
{% if i == "Device" %}
{% for v in qd.i %}
<td>{{ v }}</td>
{% endfor %}
</tr>
{% endif %}
{% endfor %}
</tbody>

最佳答案

这是 Python 对象的表示。您可以使用 ast.literal_eval(..) 将其转换为对应的 Python,然后通过遍历列表更新 QueryDict。喜欢:

from ast import literal_eval
from django.http import QueryDict

response = "[{'Device': 'device01', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 1111, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}, {'Device': 'device02', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 2222, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}]"
data = literal_eval(response)
qd = QueryDict(mutable=True)
for item in data:
qd.update(item)

如果response是一个bytes,那么你可以先把它解码成一个字符串:

from ast import literal_eval
from django.http import QueryDict

response = <b>b</b>"[{'Device': 'device01', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 1111, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}, {'Device': 'device02', 'Port': 'ETH1/5', 'Provider': 'L3', 'ID': 2222, 'Remote': 'ISPCircuit', 'Destination Port': 'ISPPort'}]"
<b>response = response.decode()</b>
data = literal_eval(response)
qd = QueryDict(mutable=True)
for item in data:
qd.update(item)

最后,我们得到如下QueryDict:

>>> qd
<QueryDict: {'Device': ['device01', 'device02'], 'Port': ['ETH1/5', 'ETH1/5'], 'Provider': ['L3', 'L3'], 'ID': [1111, 2222], 'Remote': ['ISPCircuit', 'ISPCircuit'], 'Destination Port': ['ISPPort', 'ISPPort']}>

但是您可能不想无论如何都想将其转换为QueryDict。这只是字典的列表。每个字典都包含一个'Device''Port'Provider'ID 键。因此,您可能只想使用 for 循环处理字典。

关于python - 解析 QueryDict 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com