3

我正在尝试使用瓶子(python web 框架)显示一个 html 页面。该页面嵌入了 javascript,但是当我用瓶子提供它时它不会显示它。

我正在使用的 JS 是EditArea,我可以按照自己的方式清理它,并将其放入一个 html 页面,当我在 chrome 中打开页面时该页面会正确显示。但是当我使用瓶子时:

@route('/edit')
def edit():
    return template('editarea')


@route('/edit_area')
def edit_area():
    send_file('example1.html', root='path/to/file/')

并转到http://localhost:8080/edit或 /edit_area,我看到的页面没有任何花哨的 javascript 功能。

最终我想把它连接起来(EditArea 是文本区域,我将使用它来接受希望我能够运行的代码......但这是一个单独的问题......),但现在一切都应该要做的是显示页面和javascript。JS 尽可能简单地放在 html 中。这两个块使用不同的文件,但它们只是同一个 html 文件的副本,一个带有 .html 扩展名,另一个带有 .tpl 扩展名。

<title>EditArea - the code editor in a textarea</title> 
    <script language="Javascript" type="text/javascript"     src="../edit_area/edit_area_full.js"></script> 
    <script language="Javascript" type="text/javascript"> 
        // initialisation
        editAreaLoader.init({

...然后就是所有的 JS 代码(不是我写的)。

在启动我导入的服务器的文件中:路由、运行、调试、模板、请求、send_file 和来自瓶的错误;和 sqlite3;但仅此而已。还有什么我应该包括的吗?

我查看了瓶子文档和其他一些地方,这要么是非常明显的事情,没有人会费心写下来,要么是人们不做的事情......

我在看睡衣(它不断提出涉及“python”和“javascript”的搜索查询的不同组合),但它看起来只是将 python 转换为 javascript。我不认为这就是我想要的 b/c javascript 已经是 javascript ...

感谢您提供的任何见解。

4

2 回答 2

4

您需要创建一个视图来提供静态文件,如Bottle 文档中所述。

我建议您将所有静态文件(css、js、图像)放在static应用程序旁边的文件夹中。提供静态文件的视图将如下所示:

from bottle import static_file    

@route('/static/:filename:')
def send_static(filename):
    return static_file(filename, root='./static/')

然后,您将像这样包含您的.js文件(当然使用您选择的路径):

<script type="text/javascript" src="/static/edit_area/edit_area.js"></script>
于 2011-07-29T19:28:26.060 回答
2

如果您使用的是包含在 Bottle 中的名为 SimpleTemplate 的模板系统,那么它不支持多行字符串,并且模板会被编译为可执行的 Python 字节码。所以很可能任何Javascript都会被剥离。

在您的页面中包含 javascript 的唯一方法是通过脚本标签,就像您对“edit_area_full.js”文件所做的那样。

于 2011-07-29T19:20:13.860 回答