如何从Django模板中的JSON文件访问属性元素?

2024-03-29 11:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解析一个位于远程的JSON文件,该文件会随着新数据不断更新。我不打算写JSON文件的整个结构,因为它太多了。到目前为止,我可以在模板上获取和显示名称和图像,这很简单,但我不知道如何访问一些具有属性和前导下划线的元素。在

让我们看看JSON文件的一部分:

[{ 'searchResult' : [{'@count': '5',

'item': [{ 

           'itemId': ['352565431707'],

           'title': ['Smart Tab ST8200 Quad-core 7" HD Tablet Android 8.1 Oreo 8GB'],

           'galleryURL': ['http://thumbs4.flickr.com/m/maf6ZygaFcxqMsVv2DQTh6g/140.jpg'],

           'sellingStatus': [{'currentPrice': [{'@currencyId': 'USD', '__value__': '49.0'}],

           'itemURL': ['http://rover.somewebsite.com?item=352565431707']}]

'item': [{ 

       'itemId': ['352565431808'],

       'title': ['iPhone 11 latest phone '],

       'galleryURL': ['http://thumbs4.flickr.com/m/maf6ZygaFcxqMsVv2DQOm6g/140.jpg'],

       'sellingStatus': [{'currentPrice': [{'@currencyId': 'USD', '__value__': '1200.0'}],

       'itemURL': ['http://rover.somewebsite.com?item=352565431808']}]

这是我在视图.py

^{pr2}$

这是我在主页.html模板

^{3}$

根据我所拥有的,它渲染图像和标题,但是当我试图访问值\uuU时,由于前导下划线,我得到了一条错误消息,老实说,我不知道我是否正确地使用这种方法访问属性。回到我的问题,在这种特殊情况下,我如何访问该属性,以及如何能够转义前导下划线?提前非常感谢您的帮助。在


Tags: 文件图像com模板jsonhttp属性title
3条回答

朋友,你必须使用在FOR循环中声明的相同变量。必须使用项变量而不是项。技术上该区域不存在物品:

{% for item in items %}

   <a href="{{item .viewItemURL.0}}">    
     <img src="{{ item .galleryURL.0 }}" alt="{{ item .title.0 }}" />
   </a>
   <p>Names: {{ item .title.0 }}</p> 

{% endfor %}

因为我喜欢和全世界分享我所知道的,所以这里是我自己问题的答案。经过几天的研究和绞尽脑汁,我想出了一个解决方案,它对我的案例非常有用。在

为了访问属性元素和前导下划线,我必须清理视图中的数据并在视图中进行迭代。我创建了四个变量容器,用于附加迭代的每个结果。如果您不这样做,您将只得到模板中迭代的最后结果。在

就在这里。非常感谢乔斯·埃拉斯的帮助。谢谢你的好意!在

朋友,你解决问题了吗? 如果没有,一个可能更简单的解决方案是使用javascript。 尝试以某种方式将标记变量{items}}存储在javascript变量中。在

for (let item in variableItems){
    let currentPrice = variableItems[item].sellingStatus[0].currentPrice[0];
    console.log(currentPrice['@currencyId'];
    console.log(currentPrice['__value__'];
}

一旦完成了这项工作,就可以使用这些值来达到您想要的目的。在


另一个可能的解决方案是在后端删除@字符和uu字符(因为@字符在模板中会产生问题)。您可以使用替换功能。str.replace('@', '')和结构更换(''','')

y en la pantilla html:

^{pr2}$

相关问题 更多 >