2016-04-17 9 views
0

ユーザーがいくつかのオプションの中から選択できるフラスコのウェブページを作成中です。これらのオプションに応じて、次のページで選択したオプションを表示します。 私のHTMLコード:HTMLのチェックボックスがオンになっているかどうかを確認する方法はありますか?

<input type="checkbox" name="name1">name1<br> 
<input type="checkbox" name="name2">name2<br> 
<input type="checkbox" name="name3">name3<br> 

私のPythonコード:

if checkbox 1 is checked: 
    do something 
if checkbox 2 is checked: 
    do something different 
if checkbox 3 is checked: 
    do another something different 

は、私はこれらのif文を形成する方法を見つけることができません。

.getvalue 

しかし、私はエラーが発生しました。ラジオボタンを使って、私はそれを働かせることができます。私はすべて同じそれらに名前を付け、それらを持つ別の値与えるとき:

option = request.form['name'] 

をしかし、それは最後のチェックボックスを覚えているので、これはまた、チェックボックスでは動作しませんが、私はそれらすべてをしたいです。

答えて

2

各チェックボックスは一意であり、一意にフォームに名前が付けられています。

値自体は、request.formディクショナリを介してフォームの名前をキーとしてアクセスできます。フォームの場合、チェックボックスの名前はname1,name2name3となります。ただし、フォームでチェックされている場合にのみ利用可能であることに注意してください。それ以外の場合は、その値がサーバーに送信されません。

だからあなたのビュー機能であなたは、このようにそれらにアクセスすることができます。

name1 = request.form.get('name1') 
if name1: 
    do_something(name1) 

name2 = request.form.get('name2') 
if name2: 
    do_something(name2) 

name3 = request.form.get('name3') 
if name3: 
    do_something(name3) 

これは、フォーム辞書で検索を実行するためにget()を使用しています。キーが辞書に存在する場合、値が返されます。キーが辞書にない場合は、値Noneが返されます。 name2` `` name1`を入れて:

for checkbox in 'name1', 'name2', 'name3': 
    value = request.form.get(checkbox): 
    if value: 
     do_something(value) 
+1

提案:@Kevin関によって示唆されるように

は、これは、forループで処理することができます'name'をリストに入れ、' if'文の代わりに 'for'ループを使います。 –

+0

@KevinGuan:良い提案、ありがとう。 – mhawke

関連する問題