我想在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"]
...我知道它可以完成在视图中,但我可以在模板中执行此操作....
答案 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 %}