【问题标题】:CherryPy - saving checkboxes selection to variablesCherryPy - 将复选框选择保存到变量
【发布时间】:2011-04-10 20:22:30
【问题描述】:

我正在尝试构建一个带有多个复选框、一个文本框和一个提交按钮的简单网页。

我刚刚接触了 Python 中的 Web 编程,并正在尝试用 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>

谢谢!

【问题讨论】:

  • 列表表单项的"foo[]" 样式是Ruby on Rails 的产物。这样的名称将自动收集到一个列表中,尽管像 "foo" 这样的名称将保留为标量值。我很方便,但完全在 HTML 表单或 HTTP 之外,并且没有在任何其他 Web 框架、python 或其他方式中广泛实现。

标签: python cherrypy checkbox


【解决方案1】:

这是一个最小的例子:

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 参数将是单个字符串而不是列表!)

【讨论】:

  • 你是圣人!如果我已经得到了分数,我会为你的答案投票。感谢您将我推向正确的方向。我基本上已经启动并运行了这个东西,我还使用 'argument_name'.length 来防止你的“如果只选择一个项目,那么目标参数将是单个字符串而不是列表”警告。现在我需要破译如何将一些基本的 CSS 嵌入其中(我仍然知道零:))谁能指出我在 CherryPy 中的一些小项目示例,比如这个?我只能用谷歌搜索普通的“Hello world!”/“基本博客”示例
  • About, "'argument_name'.length" 实际上我最终使用 type(argument_name) 来区分如何提取数据
猜你喜欢
  • 1970-01-01
  • 2013-05-08
  • 2012-04-20
  • 1970-01-01
  • 2017-05-23
  • 2021-05-01
  • 2021-08-29
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多