2014-02-05 1 views
0

Хорошо, не лучший титул никогда. Чтобы лучше объяснить это, позвольте мне разорвать этот на три части:Бутылка - как получить «мгновенную» информацию из html?

I) можно использовать request.forms.get(), если данные, которые я хочу, был в форме, которая послала меня к фактическому маршруту, как:

@route('/login') 
def login(): 
    return ''' 
     <form action="/login1" method="post"> 
      <input name="course" type="text"/> 
      <input value="Click!" type="submit"/> 
     </form> 

@route('/login1') 
def add_course(): 
    course = request.forms.get('course') 

II) При написании шаблона, я могу передать данные из питона в HTML:

% k = ['a', '1', 'b'] 
<h1> {{k}} </h1> 

III) Мой вопрос: это, вероятно, не представляется возможным получить мгновенные данные из HTML в питона, так как шаблон «скомпилирован» (конечно, не лучший способ описать его, извините) и полученный html в браузер даже не знает, что сделал python (есть только кодировка html в конечном исходном коде). Итак, есть ли другой способ? В основном, что я хочу сделать, это «динамический сайт с одним URL-адресом», без необходимости перестановки с ../login на ../login1. Что-то вроде:

<body> 
<input type="text" id="course"> 
% if input == 'Yes': 
    [do something] 
</body> 

В основном, что сделают jquery.

+0

Я никогда не использовал бутылку, но мне кажется, что вы описываете поведение, аналогичное AJAX - вам нужно динамические обновления без повторные серверные вызовы. – admdrew

+0

Вам, вероятно, понадобится заглянуть в AJAX, JSON и, возможно, какой-то внешний фейерверк JS. – IanAuld

+0

Ну, вы говорите «в основном то, что jQuery будет делать»: на самом деле это именно то, что будет делать jQuery, поскольку вы будете использовать jQuery (или другой код JS) для этого. –

ответ

0

Вы можете использовать WSGIServer + Bottle для создания сервера WebSocket, который достигнет этого. Поскольку Bottle подключен к WSGIServer (в данном случае), они работают сообща, чтобы предоставить статический HTML-файл, а также передавать события вокруг этого результата в реальном времени, передаваемые с Python на страницу HTML/шаблона, и наоборот Что ж. Вы можете увидеть пример делать это здесь:

https://github.com/jameswomack/CirroSockets

Вы можете прослушивать событие в стороне клиента, и триггер события из вашего кода-и Python тисках наоборот. Вы можете посмотреть более подробную информацию о том, как можно добиться этого на следующих страницах:

https://pypi.python.org/pypi/gevent-websocket/ https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications

Смежные вопросы