0

我正在将 AppEngine 与 webapp 框架(python)一起使用。在我的脚本中,我使用 Django 动态生成 javascript 代码,例如:

python控制器文件

template_values = {
    'page': '1',               
}

path = os.path.join(os.path.dirname(__file__), "../views/index.html")
self.response.out.write(template.render(path, template_values))

index.html 文件

<html>
<head>
...
<script>
{% if page %}
   alert("test");
{% endif %}
</script>
</head>
<body>

...
</body>
</html>

现在,<script>我不想使用内联标签,而是将<link>标签与对包含脚本的 JS 文件的引用一起使用。但是,我不太明白我可以使用模板引擎来做到这一点。如果我(动态地)包含一个 JS 文件,它将以某种方式必须知道“page”的值,但“page”仅在 index.html 的范围内是已知的。

有任何想法吗?

谢谢,

乔尔

4

2 回答 2

0

您要么使简单的情况过于复杂,要么没有清楚地解释您的问题。

如果你想包含一个位于外部的 JavaScript 文件,你应该使用<script>标签,而不是<link>.

如果您有这样的模板代码:

<html>
<head>
{% if page %}
   <script type="text/javascript" src="/js/foo.js"></script>
{% endif %}
</head>
...
</html>

并且page不是 None,模板将向浏览器呈现以下 HTML:

<html>
<head>
   <script type="text/javascript" src="/js/foo.js"></script>
</head>
...
</html>

<script>并且浏览器会尝试加载标签指向的资源。浏览器不知道该标签是如何进入它加载的 HTML 的。

于 2010-11-30T15:28:03.403 回答
0

如果要在 html 中动态生成 javascript 代码,可以在 python 代码中编写代码

page = 0
template_values = {
    'js_code': 'alert("test:'+str(page)+'")',               
}
path = os.path.join(os.path.dirname(__file__), "../views/index.html")
self.response.out.write(template.render(path, template_values))

在 index.html 中

<script>
{{js_code}}
</script>

如果你想动态生成一个js文件,你可以试着假装有一个js文件,并生成它的内容。

class JSHandler(BaseHandler):
    def get(self):
        page= str(self.request.get("page"))
        js_code ='alert("page:'+page+'");'
        self.response.out.write(js_code)


def main():
 application = webapp.WSGIApplication([
  ('/code.js', JSHandler),
    ], debug=True)
 wsgiref.handlers.CGIHandler().run(application)

然后你可以在你的html中编写这段代码

<script type="text/javascript" src="/code.js?page={{page}}">></script>
于 2010-12-02T20:11:25.930 回答