0

webapp フレームワーク (python) で AppEngine を使用しています。私のスクリプトでは、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>

ここで、インライン タグを使用する代わりに、スクリプトを含む JS ファイルを参照するタグ<script>を使用したいと思います。<link>ただし、テンプレート エンジンを使用してそれができるかどうかはよくわかりません。JS ファイルを (動的に) インクルードする場合、何らかの形で「ページ」の値を知る必要がありますが、「ページ」は 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>

が Noneでpageない場合、テンプレートは次の 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 に答える