1

Jinja2を使用して、input_1、input_2などのラベルが付いた可変数の入力を持つフォームを生成しています。GoogleAppEngine(python)を使用して、を使用してリクエストハンドラーでこれらの入力の値にアクセスしようとしていますself.request.args.get()

ただし、フォームによって生成される入力の数に応じて、スクリプトは複数の変数を読み取る必要があります。スクリプトはいくつあるかを知っているので、問題は、forループである種の変数変数を使用してそれらすべてを効率的に読み取る方法です。

私が求めているのは、概念的には次のようなものです。

for x in total_inputs:
  list.append(input_x)

もちろん、さまざまな数の入力に対してifステートメントを使用し、変数名を手動で実行することもできますが、それはひどく不格好なようです-確かにもっと良い方法がありますか?

どうもありがとう

4

2 に答える 2

4

次のように、文字列の書式設定でこれを行うことができます。

num = 5
tag = 'input_%d' % num

したがって、すべてのタグの値のリストを組み立てるには、次のinput_xようにすることができます。

input_values = []
for i in range(1, number_of_values + 1):
  input_values.append(self.request.get('input_%d' % i))

これは、取得する値の数がわかっていることを前提としています。あなたの質問はあなたがそうすることを前提としていますが、そうしなかった場合は、空の文字列(request.get存在しないラベルのデフォルトの戻り値)を取得するまで結果を繰り返すことができます。

編集:上記のコメントは、webappを使用していることを前提としています。他のフレームワークは、存在せず、デフォルトが指定されていない引数をKeyError呼び出そうとすると、をスローする可能性があります。get

于 2011-07-07T05:38:35.193 に答える
0
for x in total_inputs: list.append (locals () ['input_%d' % x] )

または、変数名をキーとして、その値を値として持つ辞書が必要な場合:

vars = {}    
for x in total_inputs: vars ['input_%d' % x] = locals () ['input_%d' % x]

ここにpython2.6のいくつかの実用的な例があります:

>>> input_0 = 'a'
>>> input_1 = 4
>>> input_2 = None
>>> for x in range (3): print locals () ['input_%d' % x]
...
a
4
None
>>>
于 2011-07-07T04:46:56.457 に答える