我正在尝试使用bottle(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 ...
感谢您提供的任何见解。
答案 0 :(得分:3)
您需要创建一个视图来提供静态文件,如Bottle documentation。
中所述我建议您将所有静态文件(css,js,images)放在应用程序旁边的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>
答案 1 :(得分:1)
如果您正在使用名为SimpleTemplate的Bottle中包含的模板系统,那么它不支持多行字符串,并且模板会被编译为可执行的Python字节码。所以很可能会删除任何Javascript。
在您的网页中包含javascript的唯一方法是使用脚本标记,就像您对“edit_area_full.js”文件所做的那样。