如何在Django模板中将字符串转换为列表

时间:2013-07-17 14:39:36

标签: python django

我想在django模板中将字符串转换为列表:

数据:

{u'productTitle': u'Gatsby Hard Hair Gel 150g', u'productPrice': 0.0, u'productMRP': 75.0, u'hasVariants': 0, u'productSite': u'http://www.365gorgeous.in/', u'productCategory': u'', u'currency': u'INR', u'productURL': u'http://www.365gorgeous.in/gatsby-hard-hair-gel-300g-1.html', u'productDesc': u'A Water type hair gel with is hard setting and gives hair a firm hold It is non sticky hard setting and smooth to the touch Firm hold with wet look spikes', u'productSubCategory': u'', u'availability': 0, u'image_paths': u'["full/548bc0f93037bd03340e11e8b18de33b414efbca.jpg"]'} 

我想从上面的dict中提取图像路径但是图像路径在字符串u'["full/548bc0f93037bd03340e11e8b18de33b414efbca.jpg"]'中是否有任何方法可以将其转换为模板内的["full/548bc0f93037bd03340e11e8b18de33b414efbca.jpg"] ...我知道它可以完成在视图中,但我可以在模板中执行此操作....

2 个答案:

答案 0 :(得分:3)

你可以write a template filter通过json解码运行一个字符串。

{% for image_path in data.image_paths|your_custom_json_decode_filter %}
  {{ image_path }}
{% endfor %}

这不是一个好主意,但为什么不在你看来这样做?

答案 1 :(得分:0)

模板过滤器是您的最佳选择,因为没有内置模板标记来评估字符串。如果你想在模板中转换它是你最好的选择。但是,如果只是在将数据发送到模板之前修改数据,那么在python中构建模板过滤器就没那么有意义了。无论哪种方式,你都必须在python中做一些事情。 如果您打算使用模板过滤器,请举例如下:

@register.filter # register the template filter with django
def get_string_as_list(value): # Only one argument.
    """Evaluate a string if it contains []"""
    if '[' and ']' in value:
        return eval(value)

然后在您的模板中,您需要遍历字典中的键值,并将值传递给自定义模板过滤器,如下所示:

{% for image_path in data.image_paths|get_string_as_list %}
  {{ image_path }}
{% endfor %}