尝试在python中使用Mako模板来呈现json d

2021-05-13 14:53:29 发布

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

我不理解在python中使用Mako模板的文档。我有一个python文件,我有以下代码:

import json, requests, urllib2
from mako.template import Template
from mako.lookup import TemplateLookup
from pylons.templating import render_mako as render

url="www.data&format=json"
response = urllib2.urlopen(url)
data = json.load(response)
return (Template("hello Luisito! Here is the data: ${data}!").render(json_data=data))

有人能给我提供一些关于如何使用mako模板将json数据呈现到网页中的详细信息吗?我需要另一个带有模板的文件吗?如果是,怎么办?在

2条回答
网友
1楼 ·

您需要为json数据添加一个变量:

url="www.data&format=json"
response = urllib2.urlopen(url)
data = json.load(response)   
from mako.template import Template
print(Template("hello Luisito! Here is the data: ${json_data}!").render(json_data=data))
网友
2楼 ·
from mako.template import Template
from mako.lookup import TemplateLookup
from mako import exceptions
from mako.exceptions import RichTraceback
import json

 var data = {
    "Records": [
        { 
            "pageName":"oracle.html", 
            "seoMetaData":"A page's description, usually one or two sentences.", 
            "logoImg":"./images/oracle-cloud-logo-400x336.png", 
            "logoImgUrl":"http://www.oracle.com",
            "description": "Oracle Cloud is a cloud computing service offered by Oracle Corporation providing servers, storage, network, applications and services through a global network of Oracle Corporation managed data centers. The company allows these services to be provisioned on demand over the Internet. Also, we provide the list of companies that use Oracle Cloud.",
            "product": "Oracle",
            "category": "CRM & Related",
            "customerAccount": "125,000 - 150,000"
        },
        { 
            "pageName":"microsoft.html", 
            "seoMetaData":"A page's description, usually one or two sentences.", 
            "logoImg":"./images/oracle-cloud-logo-400x336.png", 
            "logoImgUrl":"http://www.microsoft.com",
            "description": "Microsoft Cloud is a cloud computing service offered by Microsoft Corporation providing servers, storage, network, applications and services through a global network of Microsoft Corporation managed data centers. The company allows these services to be provisioned on demand over the Internet. Also, we provide the list of companies that use Microsoft Cloud.",
            "product": "Microsoft",
            "category": "CRM & Related",
            "customerAccount": "200,000 - 250,000"
        }
    ]
}

mylookup = TemplateLookup(directories=['./html'], output_encoding='utf-8', encoding_errors='replace')
uri = 'base.html'

def browseLocal(webpageText, filename):
    '''Start your webbrowser on a local file containing the text
    with given filename.'''
    import webbrowser, os.path
    strToFile(webpageText, filename)
    # webbrowser.open("file:///" + os.path.abspath(filename)) #elaborated for Mac.

def strToFile(text, filename):
    """Write a file with the given name and the given text."""
    output = open(filename,"w")
    output.write(text)
    output.close()

def fileToStr(fileName): # NEW
    """Return a string containing the contents of the named file."""
    fin = open(fileName); 
    contents = fin.read();  
    fin.close() 
    return contents

f = open("data.json", "r")
data = f.read()
jsonData = json.loads(data)
list1 = jsonData["Records"]
for val in list1:
    pageName = val["pageName"]
    seoMetaData = val["seoMetaData"]
    logoImg = val["logoImg"]
    logoImgUrl = val["logoImgUrl"]
    description = val["description"]
    product = val["product"]
    category = val["category"]
    customerAccount = val["customerAccount"]

    template = mylookup.get_template(uri)
    htmlContent = template.render_unicode(name=pageName, seoMetaData=seoMetaData, logoImg=logoImg, logoImgUrl=logoImgUrl, description=description, product=product, category=category, customerAccount=customerAccount)
    browseLocal(htmlContent, pageName)
f.close()

相关问题