为什么在尝试在模板中调用Javascript数组时会出现NameError?

时间:2013-02-12 17:20:42

标签: python json pyramid chameleon

以下是我的主页可调用的视图,它定义了jsdata:

@view_config(route_name='home_page', renderer='templates/edit.pt')
def home_page(request):
    if 'form.submitted' in request.params:
        name= request.params['name']
        input_file=request.POST['stl'].filename
        vertices, normals = [],[]
        for line in input_file:
            ....

        ordering=[]

        ...parsing data...

        data=[vertices,ordering]
        jsdata=json.dumps(data)
        renderer_dict = dict(name=name,data=jsdata)
        ...
        html_string = render('tutorial:templates/view.pt', renderer_dict, request=request)
        with open(filename,'w') as file:
                file.write(html_string)
        return HTTPFound(location=request.static_url('tutorial:pages/%(pagename)s.html')% {'pagename':name}) 

    return {}    

我也在该文件中引入了json(views.py)。它在view.pt模板上呈现。

<script>
var data = ${structure:jsdata};
</script>

NameError指向第二行的jsdata部分。为什么会这样?名称错误是否意味着它未定义?为什么说jsdata是未定义的?它应该作为关键字传递到渲染函数吗?

另外:我知道jsdata定义下面可能存在错误。我已经包含了该部分,以防它看到我想用jsdata做什么

1 个答案:

答案 0 :(得分:2)

renderer_dict = dict(name=name,data=jsdata)

您将其放在data而不是jsdata。因此,您需要${structure:data},或更改renderer_dict作业。