2

我想将字符串转换为 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"]'} 

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

4

2 回答 2

3

您可以编写一个模板过滤器,通过 json 解码运行字符串。

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

虽然这不是一个好主意,但你为什么不这样做呢?

于 2013-07-17T14:48:16.927 回答
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 %}
于 2013-07-17T15:09:59.900 回答