【问题标题】:HTML input array parsing in Python (GAE)Python 中的 HTML 输入数组解析 (GAE)
【发布时间】:2011-10-16 09:50:35
【问题描述】:

我在 Python 和 GAE 上花了两天时间,在此先感谢您的帮助。

我在 HTML 中有一个这样的输入数组:

<input type="text" name="p_item[]">
<input type="text" name="p_item[]">
<input type="text" name="p_item[]">

我想在 Python 中解析输入,我正在尝试这个,但它不起作用:

items = self.request.get('p_item')
for n in range(1,len(items)):
  self.response.out.write('Item '+n+': '+items[n])

这样做的正确方法是什么?

【问题讨论】:

  • 我从未使用过 GAE,但我猜你想要 p_item 'array' 名称值中的值。例如,p_item[field1]p_item[field2]?目前,我感觉您可能遇到了len(items) == 0 的问题。
  • 好的,我得到了这个工作,但通过删除 HTML 中的括号 []。这是一个公认的标准,只是在一个 HTML 文档中多次出现变量名,而不使用数组?
  • “不工作”是什么意思?你会得到意想不到的结果吗?你有错误吗?哪一个?在哪一行?到目前为止,您还尝试过什么?
  • 它在表单中应该是唯一的,因为它指定了您提交的键值对的键。如果您在一个表单中将多个输入命名为同一事物,我认为 self.request.get('p_item') 将无法确定您要提交的值...
  • 从我上面的评论开始,它不起作用。我只是得到第一个实例,tjko,你是对的。

标签: python html arrays google-app-engine input


【解决方案1】:

把你的html改成这个

<input type="text" name="p_item">
<input type="text" name="p_item">
<input type="text" name="p_item">

并使用 self.request.get_all() 方法http://code.google.com/appengine/docs/python/tools/webapp/requestclass.html#Request_get_all

附言作为参考,GET/POST 数据没有数组的概念,您的表单将转换为由 '&' 分隔的 key=value 字符串,例如

p_item=1&p_item=3&p_item=15

等等,由 web 框架来解释参数是否为数组。

编辑:哎呀,只需阅读您已经弄清楚的 cmets,哦,好吧:P

【讨论】:

    【解决方案2】:

    如果出现此类问题,我建议您进行一些调试。让事情变得简单,写下你的变量值,确保你在每一步都得到你期望的结果。执行以下操作:

    <form method="get">
       <input type="text" name="single_key" />
       <input type="text" name="array_key[some_key]" />
       <input type="submit" />
    </form>
    

    看看在后端运行以下 Python 时会发生什么:

    single_value = self.request.get('single_key')
    self.response.out.write(str(single_value))
    
    array_value = self.request.get('array_key')
    self.response.out.write(str(array_value))
    

    根据输出,您应该更好地了解如何获得所需的结果,或者如果您仍然不了解特定行为,如何为您的问题添加更多细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2013-12-05
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      相关资源
      最近更新 更多