繁体   English   中英

试图在python中使用Mako模板来呈现json数据

[英]Trying to use Mako template in python to render json data

我不了解在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数据呈现到网页中的更多详细信息吗? 我需要模板的另一个文件吗? 如果是这样,怎么办?

您需要为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))
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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM