CherryPy - 将复选框选择保存到变量

4 投票
1 回答
3379 浏览
提问于 2025-04-16 03:58

我正在尝试创建一个简单的网页,里面有多个复选框,一个文本框和一个提交按钮。

我刚接触到用Python进行网页编程,正在努力学习如何用CherryPy来实现这个功能。

我需要把每个复选框和一个变量关联起来,这样我的.py文件就能知道在点击“开始按钮”时哪些复选框被选中了。

有没有人能给我一些代码示例?使用像Pyjamas这样的Python到JavaScript编译器有什么好处吗?

<form action="../remote_targets/ssh_grab.py">
  <label for="goal"><strong>Host Availability:</strong></label>
  <input style="margin-left: 30px;" type="checkbox" name="goal[]" value="cpu" /> CPU idle<br>
  <input style="margin-left: 30px;" type="checkbox" name="goal[]" value="lighttpd" /> Lighttpd Service<br>
  <input style="margin-left: 30px;" type="checkbox" name="goal[]" value="mysql" /> Mysql Service<br>
</form>

谢谢!

1 个回答

10

这里有一个简单的例子:

import cherrypy

class Root(object):
    @cherrypy.expose
    def default(self, **kwargs):
        print kwargs
        return '''<form action="" method="POST">
Host Availability:
<input type="checkbox" name="goal" value="cpu" /> CPU idle
<input type="checkbox" name="goal" value="lighttpd" /> Lighttpd Service
<input type="checkbox" name="goal" value="mysql" /> Mysql Service
<input type="submit">
</form>'''

cherrypy.quickstart(Root())

这是终端输出:

$ python stacktest.py 
[10/Sep/2010:14:25:55] HTTP Serving HTTP on http://0.0.0.0:8080/
CherryPy Checker:
The Application mounted at '' has an empty config.
Submitted goal argument: None
127.0.0.1 - - [10/Sep/2010:14:26:09] "GET / HTTP/1.1" 200 276 "" "Mozilla..."
Submitted goal argument: ['cpu', 'mysql']
127.0.0.1 - - [10/Sep/2010:14:26:15] "POST / HTTP/1.1" 200 276 "http://localhost:8003/" "Mozilla..."
[10/Sep/2010:14:26:26] ENGINE <Ctrl-C> hit: shutting down app engine
[10/Sep/2010:14:26:26] HTTP HTTP Server shut down
[10/Sep/2010:14:26:26] ENGINE CherryPy shut down
$

你可以看到,CherryPy会把多个同名的控件收集到一个列表里。你不需要加上 [] 后缀来告诉它这样做。接着,你可以遍历这个列表,看看提交了哪些值。(记住,如果只选了一个项目,那么 goal 参数会是一个单独的字符串,而不是一个列表!)

撰写回答