簡體   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