2011-09-03 83 views
1

在以下代码片段中,我试图从Tornado服务器的HTML文件中添加JavaScript文件<HEAD>标记。JavaScript在龙卷风web服务器中的渲染

DEBUG_SCRIPTS = ''' <script src="src/main.js" type="text/javascript"></script> ''' 

class Entries(tornado.web.UIModule): 
    def javascript_files(self): 
    return 'src/main.js' 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
    params = {} 
    params['CORE_SCRIPTS'] = DEBUG_SCRIPTS 
    path = os.path.join(os.path.dirname(__file__), 'index.html') 
    self.render(path, params=params) 

通过params['CORE_SCRIPTS'] = DEBUG_SCRIPTS我尝试添加HTML中<script>标签,但它得到的产生

&lt;script type=&quot;text/javascript&quot; src=&quot;src/main.js&quot;&gt;&lt;/script&gt;

所以我在tornado specs跨越javascript_files()方法来解析文本,但我没有变任何关于它的实现的例子。谁能帮忙?

回答

3

javascript files只适用于UIModules。包含JavaScript文件的方式会在body标签结束之前附加到页面上,但不在head标签中。

如果你真的想包括头标记的文件,你可以简单地输出在模板的head标签的params['CORE_SCRIPTS']值:

{% raw params['CORE_SCRIPTS'] %} 
+0

感谢马恩!它的工作。但即使我用'javascript_files'做了它没有附加到body。你知道任何实现的例子吗?第二点是什么'%'(我的意思是'%'n'{}')和'raw'之间的区别意味着在这里? –

+0

在我链接到的UIModules文档中有一个例子。您需要在模板中实际使用该模块,例如'{%module Entries(entry)%}'。 –

+2

至于你的第二个问题:'{{foo}}'在模板中输出一个变量,'{%foo%}'调用函数foo。 –