Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
遍历字符串和列表的Python/Django模板_Python_Django_Django Templates - Fatal编程技术网

遍历字符串和列表的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 + "

我在Python/Django中遇到了一个问题,即我有一个字符串或字符串列表被传递给模板。如果它是一个列表,我需要遍历它并在单独的行上输出每个字符串,如果它是一个字符串,我只需要输出字符串。我需要能够区分不同的值类型,并进行相应的调整

目前我有类似的代码:

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的视图代码,对吗?你应该可以修改,谢谢!我以前确实看过那个问题,但事实证明我应该更仔细地阅读它。