我可以在Bottle框架中使用JavaScript吗?
我正在尝试使用Bottle这个Python的网页框架来显示一个HTML页面。这个页面里面嵌入了JavaScript,但当我用Bottle来提供这个页面时,JavaScript却没有显示出来。
我使用的JS是EditArea,我可以根据自己的需求整理它,并放到一个HTML页面中,当我在Chrome浏览器中打开这个页面时,它能正常显示。但是当我用Bottle时:
@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代码(这些代码我没有写)。
在启动服务器的文件中,我导入了:route、run、debug、template、request、send_file和error这些Bottle的功能;还有sqlite3;就这些。请问我还需要包含其他东西吗?
我查阅了Bottle的文档,还有其他一些地方,但要么是一些非常明显的东西没人写下来,要么就是人们根本不这样做……
我还看了pyjamas(我用“python”和“javascript”组合搜索时总是能找到它),但它看起来只是把Python转换成JavaScript。我觉得这不是我想要的,因为JavaScript已经是JavaScript了……
谢谢你们提供的任何见解。
2 个回答
你需要创建一个视图来提供静态文件,具体内容可以参考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>
如果你在使用Bottle这个框架里的模板系统,叫做SimpleTemplate,那么它不支持多行字符串,而且这些模板会被编译成可以执行的Python字节码。所以,任何JavaScript代码很可能会被去掉。
要在你的页面中包含JavaScript,唯一的方法就是像你之前那样,通过