遍历字符串和列表的Python/Django模板
我在Python/Django中遇到了一个问题,即我有一个字符串或字符串列表被传递给模板。如果它是一个列表,我需要遍历它并在单独的行上输出每个字符串,如果它是一个字符串,我只需要输出字符串。我需要能够区分不同的值类型,并进行相应的调整 目前我有类似的代码:遍历字符串和列表的Python/Django模板,python,django,django-templates,Python,Django,Django Templates,我在Python/Django中遇到了一个问题,即我有一个字符串或字符串列表被传递给模板。如果它是一个列表,我需要遍历它并在单独的行上输出每个字符串,如果它是一个字符串,我只需要输出字符串。我需要能够区分不同的值类型,并进行相应的调整 目前我有类似的代码: if isinstance(values, list): for value in values: html += value + "<br />" else: html += values + "
if isinstance(values, list):
for value in values:
html += value + "<br />"
else:
html += values + "<br />"
如果存在(值,列表):
对于值中的值:
html+=值+“
”
其他:
html+=值+“
”
我的问题有两个:
首先,我正在寻找一种更好/更具python风格的方法(如果可能的话)来达到同样的效果。我知道在某些情况下,isinstance
方法不是一个理想的解决方案,但我是否能够使用类似于hasattr
的方法,这是否会提高效率
其次,我理想地希望使用Django模板语言实现这一点。如果我继续使用isinstance
或更改为hasattr
,我将不得不创建一个自定义模板过滤器或标记,以便能够传递正确的参数。我是否应该忘记模板而只是编写一个在视图中生成HTML的代码(糟糕的做法),或者对其中一个的答案是适合我的情况的最佳方法?(或)
当前模板代码可在此处找到:
背景:
我目前正在编写一些Python(Django)代码,这些代码实现了一个用于处理查询的简单REST/Json API。需求之一是将Python字典列表(从JSON解析)转换为非常简单的HTML表。为了实现这个功能,我使用了一个Django模板,它获取Python字典列表并从中生成HTML
任何帮助/建设性的批评都将不胜感激。isinstance可能是您想要区分字符串和另一个iterable的地方,但您应该与basestring(所有字符串都源自basestring)进行比较,而不是列表。见问题和答案
if isinstance(values, basestring):
html += values + "<br />"
else:
for value in values:
html += value + "<br />"
如果isinstance(值、基串):
html+=值+“
”
其他:
对于值中的值:
html+=值+“
”
是什么让你说不建议使用isinstance
?“我有一个字符串或字符串列表被传递到模板。”我确信这在某种程度上违反了编程原则;我只是不能一下子记住所有的名字。告诉我们你在哪里使用它,也许你需要一个好的重构。卡蒂克:我可能应该用不同的措辞。我编辑了这篇文章。伊格纳西奥:是的,你是对的。不幸的是,问题源于解析的JSON对象列表,我无法控制其中的内容。lalo:有关更多上下文,请参见此处:。谢谢你的反馈!您应该控制提供已解析json的视图代码,对吗?你应该可以修改,谢谢!我以前确实看过那个问题,但事实证明我应该更仔细地阅读它。