2010-11-30 15 views
0

私はWebアプリケーションフレームワーク(Python)でAppEngineを使用しています。私はジャンゴで動的にJavaScriptコードを生成しています私のスクリプトでは、例えば:テンプレートを含む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ファイルを(動的に)インクルードすると、何らかの形で「ページ」の値を知る必要がありますが、「ページ」はindex.htmlの範囲でのみ認識されます。

アイデア?

おかげで、

ジョエル

答えて

0

あなたが動的にHTMLにJavaScriptのコードを生成したい場合は、 あなたがPythonコード内のコードを書くことができますが、JSを生成する場合のindex.html

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

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)) 

動的にファイルを作成するには、という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) 

次に、あなたはそれがユーザーのJavaScriptファイル内のテンプレートコードを配置したい明らかだ例のコードからあなたのhtmlに

<script type="text/javascript" src="/code.js?page={{page}}">></script> 
0

は、次のいずれかの単純な状況をオーバー複雑にしている、またはあなたは明らかにあなたの問題を説明していません。

外部にあるJavaScriptファイルを含める場合は、ではなく<script>タグを使用します。あなたは、このようなテンプレートコードがある場合は

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

をし、ブラウザがロードしようとします:

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

pageがNoneでない、テンプレートには、ブラウザに次のHTMLをレンダリングします<script>タグが指すリソース。ブラウザは、そのタグがロードされたHTMLにどのように取り込まれたかを知らない。

+0

をこのコードを書くことができます。 – rutherford

関連する問題