相关疑难解决方法(0)

填充WTForms FormField FieldList,数据结果以字段形式显示HTML

我有一个Flask应用程序,我可以通过上传CSV文件填充表单数据然后读取.我想用从CSV读取的数据填充FieldList.但是,当我尝试填充数据时,它会将原始HTML输入到TextFields中,而不仅仅是我想要的值.我究竟做错了什么?

app.py

from flask import Flask, render_template, request, url_for
from flask.ext.wtf import Form
from wtforms import StringField, FieldList, FormField, SelectField
from wtforms.validators import DataRequired
from werkzeug.datastructures import MultiDict

app = Flask(__name__)
app.config['SECRET_KEY']='asdfjlkghdsf'

# normally student data is read in from a file uploaded, but for this demo we use dummy data
student_info=[("123","Bob Jones"),("234","Peter Johnson"),("345","Carly Everett"),
              ("456","Josephine Edgewood"),("567","Pat White"),("678","Jesse Black")]

class FileUploadForm(Form):
    pass

class StudentForm(Form):
    student_id = StringField('Student ID', validators = [DataRequired()])
    student_name = StringField('Student Name', validators = [DataRequired()])

class AddClassForm(Form): …
Run Code Online (Sandbox Code Playgroud)

python fieldlist flask wtforms flask-wtforms

19
推荐指数
2
解决办法
8071
查看次数

如何将MultiDict转换为嵌套字典

我想将一个POST从Webob MultiDict转换为嵌套字典.例如

所以从POST:

'name=Kyle&phone.number=1234&phone.type=home&phone.number=5678&phone.type=work'
Run Code Online (Sandbox Code Playgroud)

多元化;

[('name', 'Kyle'), ('phone.number', '1234'), ('phone.type', 'home'), ('phone.number', '5678'), ('phone.type', 'work')]
Run Code Online (Sandbox Code Playgroud)

到嵌套字典

{'name': 'Kyle',
 'phone': [
  {
    'number': '12345',
    'type': 'home',
  },{
    'number': '5678',
    'type': 'work',
  },
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑

我最终variable_decode从Will发布的formencode包中提取了该方法.唯一需要的改变是明确列表,例如

'name=Kyle&phone-1.number=1234&phone-1.type=home&phone-2.number=5678&phone-2.type=work'
Run Code Online (Sandbox Code Playgroud)

哪个更好有很多原因.

python nested nested-forms webob

10
推荐指数
1
解决办法
1万
查看次数