使用Jinja2在web页面上显示元组的详细信息



我正在写一个python脚本,它将从我的服务器获取随需应变资产的详细信息。目前,我正在获取的标题,海报和评级的资产。我可以把这些细节放到命名元组中。从那里我需要打印包括使用Jinja2的网页上的海报的显示。我不知道我在这里错过了什么。我写的代码是

Test.py

import requests
from collections import namedtuple
from jinja2 import Environment, FileSystemLoader
r = requests.get("http://172.19.37.3:5600/cmdc/content?region=24802&currency=myr&catalogueId=24802&isPurchasable&filter=source~vod&filter=source~group&count=255&collapse=true&sort=%2btitle&pset=Group1")
data = r.json()
assets = {}
AssetDetails = namedtuple('AssetDetails', 'title, parental_rating, poster_uri')
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('test.html')
for asset in data['contents']:
    for media_uri in asset['media']:
        poster_uri = ""
        if media_uri['classification'] == "urn:nnds:Metro:metadata:MediaTypeCS:2007:2.1":
            poster_uri = media_uri['uri']
        assets[asset['id']] = AssetDetails(asset['title'], asset['parentalRating']['rating'], poster_uri)
        #print assets[asset['id']]
        if poster_uri != "":
           print " ".join(('Title:', assets[asset['id']].title))
           print " ".join(('Parental_Rating:', str(assets[asset['id']].parental_rating)))
           print " ".join(('Poster_uri:', assets[asset['id']].poster_uri))

模板/test.html

<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
{% for item in c['assets']: %}
   <h1>{{ items['title'] }}</h1>
   <ul>
    <img src="{{ item['poster_uri'] }}" />
    <li>Id: {{ item['parentalRating'] }} </li>
   </ul>
{% endfor %}

或者还有其他方法可以在网页上获得这些详细信息吗?我知道我不是填充一个网页,以获得这些细节,但我不知道如何做到这一点?

修改了test.py中的代码。删除了namedtuple,并使用列表的列表来获取提取的值。在渲染时将列表传递给html文件。

test.py

import requests, re
from jinja2 import Environment, FileSystemLoader
r = requests.get("http://172.19.37.3:5600/cmdc/content?region=24802&currency=myr&catalogueId=24802&isPurchasable&filter=source~vod&filter=source~group&count=30&collapse=true&sort=%2btitle&pset=Group1")
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('test.html')
data = r.json()
assets = list()
for asset in data['contents']:
    for media_uri in asset['media']:
        poster_uri = ""
        if media_uri['classification'] == "urn:nnds:Metro:metadata:MediaTypeCS:2007:2.1":
            poster_uri = media_uri['uri']
            a_id = (asset['id'])
            id = a_id[a_id.index('://') + 3:]
            a_id = id
            asset_id = a_id.encode('utf-8')
            asset_title = asset['title'].encode('utf-8')
            asset = [asset_id, asset_title, poster_uri]
            assets.append(asset)
            poster_uri = poster_uri.encode('utf-8')
templateVars = { "VOD" : assets }
outputText = template.render( templateVars )
with open("VOD_Parsing.html", "wb") as fh:
    fh.write(outputText)

test.html

<!doctype html>
<html lang="en">
<body>
<div id="content">
   {% for item in VOD %}
      <li>ID: {{ item[0] }}</li><li> Title: {{ item[1] }}</b></li>
      <img src="{{ item[2] }}" alt="dummy.jpg"> </img>
   {% endfor %}
</div>
</body>
</html>

最新更新