Python 使用Jinja2在网页上显示元组的详细信息
我正在用python编写一个脚本,它将从我的服务器获取按需资产的详细信息。目前我正在获取该资产的标题、海报和评级。我可以将这些细节放入一个命名的元组中。从那里我需要打印,包括在网页上使用Jinja2显示海报。我不确定我在这里错过了什么。我写的代码是 Test.py 模板/test.htmlPython 使用Jinja2在网页上显示元组的详细信息,python,django,python-2.7,jinja2,Python,Django,Python 2.7,Jinja2,我正在用python编写一个脚本,它将从我的服务器获取按需资产的详细信息。目前我正在获取该资产的标题、海报和评级。我可以将这些细节放入一个命名的元组中。从那里我需要打印,包括在网页上使用Jinja2显示海报。我不确定我在这里错过了什么。我写的代码是 Test.py 模板/test.html 或者有没有其他方法可以在网页上获取这些详细信息?我知道我不是在填充网页来获取这些详细信息,但我不知道该怎么做 更改了test.py中的代码。删除namedtuple并使用列表列表来提取值。在呈现时将列表传
或者有没有其他方法可以在网页上获取这些详细信息?我知道我不是在填充网页来获取这些详细信息,但我不知道该怎么做 更改了test.py中的代码。删除namedtuple并使用列表列表来提取值。在呈现时将列表传递到html文件 test.py test.html
这有点不清楚。测试的其余部分在哪里,它在哪里实际呈现模板?到底出了什么问题?丹。。这就是我怀疑的地方。如何呈现模板?对不起,我真的不明白你的问题是什么。您可以使用render方法以与任何其他模板完全相同的方式渲染它-请参见.Dan。。这是我第一次使用Django。当我查看另一个示例时,要渲染的命令是\u从\u解析的\u template=template.renderfoo='Hello World!'输出的但是如何呈现这个特定的test.html?我希望现在清楚了。这不是Django,是Jinja2。你为什么不能在这里用那种精确的方法?
import requests
from collections import namedtuple
from jinja2 import Environment, FileSystemLoader
r = requests.get("http://172.19.37.3:5600/cmdc/content?region=24802¤cy=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))
<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 %}
import requests, re
from jinja2 import Environment, FileSystemLoader
r = requests.get("http://172.19.37.3:5600/cmdc/content?region=24802¤cy=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)
<!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>