Могу ли я использовать JavaScript с бутылкой (рамки)? - PullRequest
2 голосов
/ 29 июля 2011

Я пытаюсь отобразить страницу HTML, используя бутылку (веб-фреймворк Python).На странице есть встроенный 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 (что я не писал).

В файле для запуска сервера, который я импортирую: route, run, debug, template, request, send_file и error from bottle;и sqlite3;но это всеЕсть ли что-то еще, что я должен включить?

Я просмотрел документацию на бутылку и несколько других мест, и это либо что-то действительно очевидное, что никто не потрудился записать, либо это то, чего люди просто не делаютdo ...

Я смотрел на пижаму (она продолжает предлагать разные комбинации поисковых запросов, включающих "python" и "javascript"), но похоже, что он просто конвертирует python в javascript.Я не думаю, что это то, чего я хочу, потому что javascript уже является javascript ...

Спасибо за понимание, которое у вас есть.

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

Вам необходимо создать представление для обслуживания статических файлов, как описано в Документация по бутылкам .

Я предлагаю вам поместить все ваши статические файлы (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 голос
/ 29 июля 2011

Если вы используете систему шаблонов, включенную в Bottle, называемую SimpleTemplate, то она не поддерживает многострочные строки, и шаблоны компилируются в исполняемый байт-код Python.Поэтому вполне вероятно, что любой Javascript будет удален.

Единственный способ включить javascript на вашу страницу - использовать теги сценария, как вы делали для файла "edit_area_full.js".

...