2015-04-08 2 views
0

У меня есть этот скрипт python, который я использую для отправки списка словарей на веб-страницу.Проверка нескольких переключателей с помощью Flask

from flask import Flask, render_template 
from flask.ext.wtf import Form 
from wtforms.fields import RadioField 

app = Flask(__name__) 
app.config.from_object(__name__) 

class SimpleForm(Form): 
    relevance = RadioField('Label', choices=[('0','A'), ('1','B'), ('2','C')]) 

@app.route('/',methods=['post','get']) 
def hello_world(): 
    form = SimpleForm() 
    if form.validate_on_submit(): 
     print form.relevance 
    else: 
     print form.errors 

    stuff = { 
      "text": "blah", 
      "other": "random", 
      "title": "21", 
      "radios": form 
     } 
    stuff2 = { 
      "text": "blah2", 
      "other": "random2", 
      "title": "22", 
      "radios": form 
     } 
    all_stuff = { 
     "mall": [stuff, stuff2] 
    } 
    return render_template('example.html', **all_stuff) 

if __name__ == '__main__': 
    app.run(debug=True) 

Это example.html:

<form method="post"> 
    {% for a in mall %} 
     {{ a.other }}<br> 
     {{ a.title }}<br> 
     {{ a.text }}<br> 
     {{ a.radios.relevance }}<br> 
    {% endfor %} 
    <input type="submit"> 
</form> 

Это печатает два словаря, но радиокнопки действуют как единый набор переключателей. Здесь я показал 2 словаря, но у меня будет как 50 словарей, значения радиокнопки которых я должен представить. Как я могу это сделать? Всякий раз, когда я отправляю, я получаю {'csrf_token': ['CSRF token missing']}

Другое дело, почему именно этот способ рендеринга Радио-кнопок приводит к вертикальному списку переключателей? Есть ли способ получить горизонтальное представление кнопок?

+0

Это потому, что все ваши словари указывают на один экземпляр формы? Видеть отображаемый html может помочь. – gonkan

ответ

0

Поле «радио» позволяет вам проверять только одну кнопку.

Чтобы выбрать несколько опций, вы должны использовать поле «флажок».