瓶子 - 如何从HTML获取'即时'信息?

时间:2014-02-05 16:25:26

标签: python bottle

好的,不是有史以来最好的头衔。为了更好地解释它,让我将其分为三个部分:

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)编写模板时,我可以将数据从python传递给html:

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

III)我的问题是:可能无法从html到python获取即时数据,因为模板是“编译的”(当然不是描述它的最佳方式,对不起)以及在浏览器中生成的html甚至不知道python做了什么(在最终的源代码中只有html编码)。那么,还有其他方法吗?基本上我想做的是一个'动态的一个URL站点',而不需要从../login交换到../login1。类似的东西:

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

基本上jquery会做什么。

1 个答案:

答案 0 :(得分: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