2016-12-06 3 views
0

Flask WTForms RadioFieldで、ラジオボタンのリストを順序付けられていないリストの代わりに順序付きリストにレンダリングすることができるかどうかを知りたいと思います。次のように私の現在のJinja2のテンプレートは次のとおりです。qa変数はRadioField入力をあるレンダリングフラスコオーダーリストのRadioField行/ボタン

{% extends "base.html.j2" %} 

{% block content %} 

<form action="/test" method="POST"> 
    {% if test_form.errors %} 
    {{ test_form.errors }} 
    {% endif %} 

    {{ test_form.csrf_token }} 
    {% for qa in test_form.question_attempts %} 
    <div class="well"> 
     <div> 
     {{ qa.label }} 
     </div> 
     <div> 
     {{ qa }} 
     </div> 
    </div> 
    {% endfor %} 
    {{ test_form.submitfield(class="btn btn-success") }} 
</form> 

{% endblock %} 

EDIT:

明確にするために、test_formquestion_attemptsあるRadioFields、のリストが含まれています。私がしたいのは、各qaに、順序付けられていないリストではなく、ラジオボタンと関連するラジオボタンのテキストをレンダリングさせることです。

答えて

1

WTForms documentationを見ると、ラジオボタンのリストがデフォルトでどのようにレンダリングされるかを説明するRadioFieldsの説明の下の部分が最初に欠落していました。

{% for subfield in form.radio %} 
    <tr> 
     <td>{{ subfield }}</td> 
     <td>{{ subfield.label }}</td> 
    </tr> 
{% endfor %} 

これで、ラジオボタンと関連付けられたテキストが順序付けられていないリストにレンダリングされます。私はユーザーがテストを受けることができるアプリケーションを作っているので、私は "A. B.など"のリストで答えの選択をしたいと思っていました。これはかなり簡単でした - 私はquestion_attemptフォームのラジオフィールドをどのようにレンダリングする必要があるかを明示的に指定する必要がありました。私は以下のコードを更新します:

{% extends "base.html.j2" %} 

{% block content %} 

<form action="/test" method="POST"> 
    {% if test_form.errors %} 
    {{ test_form.errors }} 
    {% endif %} 

    {{ test_form.csrf_token }} 
    {% for qa in test_form.question_attempts %} 
    <div class="well"> 
     <div> 
     {{ qa.label }} 
     </div> 
     <div> 
     <ol type="A"> 
     {% for subfield in qa.answer_selection %} 
      <li> 
      {{ subfield }} 
      {{ subfield.label }} 
      </li> 
     {% endfor %} 
     </ol> 
     {{ qa.question_id }} 
     </div> 
    </div> 
    {% endfor %} 
    {{ test_form.submitfield(class="btn btn-success") }} 
</form> 

{% endblock %} 

このフォームは、ラジオボタンのフィールドと順序付きリストをレンダリングします。

明示的にテンプレートを作成すると、フィールドの表示方法をさらに細かく制御できますが、フォームの各コンポーネントがテンプレートにレンダリングされるようにする必要があります。さもなければそれらの分野からのデータは掲示されたデータに含まれません。これは、ユーザー入力が必要なフィールド(表示されないため)には明白ですが、ハウスキーピングデータに非表示フィールドを使用している場合は問題が発生する可能性があります。

関連する問題