Javascript 使用jinja2模板(列表和目录)将Python数据结构转换为js数据结构
我有一个与这个问题非常相似的问题,但下一步是——python中的字符串变量名如何成为javascript对象 因此,在python中,我有以下内容:Javascript 使用jinja2模板(列表和目录)将Python数据结构转换为js数据结构,javascript,python,list,jinja2,Javascript,Python,List,Jinja2,我有一个与这个问题非常相似的问题,但下一步是——python中的字符串变量名如何成为javascript对象 因此,在python中,我有以下内容: data=[{'year':2006,'books':54,'author':'fred'}, {'year':2007,'books':43,'author':'sue'}, {'year':2008,'books':41,'author':'bill'}, {'year':2009,'books':44,'author':'alex'}, {'
data=[{'year':2006,'books':54,'author':'fred'},
{'year':2007,'books':43,'author':'sue'},
{'year':2008,'books':41,'author':'bill'},
{'year':2009,'books':44,'author':'alex'},
{'year':2010,'books':35,'author':'fred'}]
我可以通过{data | safe}将其输出到javascript中
但我希望我的javascript看起来像这样:
var data=[{年份:2006,书籍:54,作者:'fred'},
{年份:2007,书籍:43,作者:'苏'},
{年份:2008,书籍:41,作者:'比尔'},
{年份:2009,书籍:44,作者:'alex'},
{年份:2010,书籍:35本,作者:'fred'}];
然而,它是在这样的时刻出现的:
var data=[{'year':2006,'books':54,'author':'fred'},
{'year':2007,'books':43,'author':'sue'},
{'year':2008,'books':41,'author':'bill'},
{'year':2009,'books':44,'author':'alex'},
{'year':2010,'books':35,'author':'fred'}];
有什么办法可以这样做吗
非常感谢,,
Mark随附的Flask负责生成同样是HTML安全的有效Javascript子集:
var data = {{ data|tojson|safe }};
如果您不使用烧瓶,则如下所示:
导入json
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
随Flask附带的功能负责生成一个同样是HTML安全的有效Javascript子集:
var data = {{ data|tojson|safe }};
如果您不使用烧瓶,则如下所示:
导入json
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
随Flask附带的功能负责生成一个同样是HTML安全的有效Javascript子集:
var data = {{ data|tojson|safe }};
如果您不使用烧瓶,则如下所示:
导入json
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
随Flask附带的功能负责生成一个同样是HTML安全的有效Javascript子集:
var data = {{ data|tojson|safe }};
如果您不使用烧瓶,则如下所示:
导入json
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
解决方案是Martijn Pieters和traceur的组合,非常感谢:D
因此,代码的工作版本是:
在Python中:
data = [{'year': 2006, 'books': 54, 'author': 'fred'},
{'year': 2007, 'books': 43, 'author': 'sue'},
{'year': 2008, 'books': 41, 'author': 'bill'},
{'year': 2009, 'books': 44, 'author': 'alex'},
{'year': 2010, 'books': 35, 'author': 'fred'}]
....rest of code....
variables = {
'data' : data
}
template = JINJA_ENVIRONMENT.get_template('main.html')
self.response.write(template.render(variables))
除此之外,我还必须为jinja2注册一个新的JSON过滤器:
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
autoescape=True,
extensions=['jinja2.ext.autoescape'])
def tojson(obj):
"""Produce HTML-safe JSON"""
return (json.dumps(obj)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
JINJA_ENVIRONMENT.filters['tojson'] = tojson
JINJA_ENVIRONMENT=jinja2.ENVIRONMENT(
loader=jinja2.FileSystemLoader(os.path.dirname(_文件__)),
自动转义=真,
扩展=['jinja2.ext.autoescape'])
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
JINJA_环境。过滤器['tojson']=tojson
…然后在HTML中需要调用此过滤器以将其放置在javascript中,但也要根据traceur的注释进行评估。(我真的不知道为什么)
dataSource=eval(“({data | tojson | safe}})”
console.log(数据源)
…使用数据源做一些事情。。。。
dataSource现在是一个js对象,它的格式对于我的ChartJS可视化来说是正确的
非常感谢 解决方案是Martijn Pieters和traceur的组合,非常感谢:D 因此,代码的工作版本是: 在Python中:
data = [{'year': 2006, 'books': 54, 'author': 'fred'},
{'year': 2007, 'books': 43, 'author': 'sue'},
{'year': 2008, 'books': 41, 'author': 'bill'},
{'year': 2009, 'books': 44, 'author': 'alex'},
{'year': 2010, 'books': 35, 'author': 'fred'}]
....rest of code....
variables = {
'data' : data
}
template = JINJA_ENVIRONMENT.get_template('main.html')
self.response.write(template.render(variables))
除此之外,我还必须为jinja2注册一个新的JSON过滤器:
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
autoescape=True,
extensions=['jinja2.ext.autoescape'])
def tojson(obj):
"""Produce HTML-safe JSON"""
return (json.dumps(obj)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
JINJA_ENVIRONMENT.filters['tojson'] = tojson
JINJA_ENVIRONMENT=jinja2.ENVIRONMENT(
loader=jinja2.FileSystemLoader(os.path.dirname(_文件__)),
自动转义=真,
扩展=['jinja2.ext.autoescape'])
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
JINJA_环境。过滤器['tojson']=tojson
…然后在HTML中需要调用此过滤器以将其放置在javascript中,但也要根据traceur的注释进行评估。(我真的不知道为什么)
dataSource=eval(“({data | tojson | safe}})”
console.log(数据源)
…使用数据源做一些事情。。。。
dataSource现在是一个js对象,它的格式对于我的ChartJS可视化来说是正确的
非常感谢 解决方案是Martijn Pieters和traceur的组合,非常感谢:D 因此,代码的工作版本是: 在Python中:
data = [{'year': 2006, 'books': 54, 'author': 'fred'},
{'year': 2007, 'books': 43, 'author': 'sue'},
{'year': 2008, 'books': 41, 'author': 'bill'},
{'year': 2009, 'books': 44, 'author': 'alex'},
{'year': 2010, 'books': 35, 'author': 'fred'}]
....rest of code....
variables = {
'data' : data
}
template = JINJA_ENVIRONMENT.get_template('main.html')
self.response.write(template.render(variables))
除此之外,我还必须为jinja2注册一个新的JSON过滤器:
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
autoescape=True,
extensions=['jinja2.ext.autoescape'])
def tojson(obj):
"""Produce HTML-safe JSON"""
return (json.dumps(obj)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
JINJA_ENVIRONMENT.filters['tojson'] = tojson
JINJA_ENVIRONMENT=jinja2.ENVIRONMENT(
loader=jinja2.FileSystemLoader(os.path.dirname(_文件__)),
自动转义=真,
扩展=['jinja2.ext.autoescape'])
def tojson(obj):
“”“生成HTML安全JSON”“”
返回(json.dumps(obj)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))
JINJA_环境。过滤器['tojson']=tojson
…然后在HTML中需要调用此过滤器以将其放置在javascript中,但也要根据traceur的注释进行评估。(我真的不知道为什么)
dataSource=eval(“({data | tojson | safe}})”
console.log(数据源)
…使用数据源做一些事情。。。。
dataSource现在是一个js对象,它的格式对于我的ChartJS可视化来说是正确的
非常感谢 解决方案是Martijn Pieters和traceur的组合,非常感谢:D 所以工作版本o