Python 2.7 如何使用字符串从窗体访问嵌套属性?

Python 2.7 如何使用字符串从窗体访问嵌套属性?,python-2.7,flask-wtforms,getattr,Python 2.7,Flask Wtforms,Getattr,我有几个元素在一个表单中使用Flask WTF和这个命名约定 # req_app_qty # req_app_note # req_main_qty # req_main_note # req_side_qty # req_side_note # req_bread_qty # req_bread_note # continued... 我可以像这样手动访问表单数据 print "Manually (qty): " , form.req_app_qty.data # works

我有几个元素在一个表单中使用Flask WTF和这个命名约定

# req_app_qty
# req_app_note
# req_main_qty  
# req_main_note
# req_side_qty
# req_side_note
# req_bread_qty
# req_bread_note
# continued... 
我可以像这样手动访问表单数据

print "Manually (qty): " , form.req_app_qty.data     # works fine
print "Manually (note): " , form.req_app_note.data   # works fine
但我正在尝试以更自动化的方式访问此表单数据

categories = [ "app", "main", "side", "bread", "dessert", "bev", "uten", "cups", "misc"]
for x in categories:
    field1 = "req_%s_qty.data" % x    # create a string to represent the attributes
    field2 = "req_%s_note.data" % x   # create a string to represent the attributes
    qty_rqst = form.field1.data           # fails
    rqst_note = form.field2.data          # fails

    # also tried        
    print "QTY=", getattr(form, field1)   # fails  
    print "Note:", getattr(form, field2)  # fails
我尝试了以上这些方法,但都失败了

第一个方法行失败,并出现一个错误,指出表单没有属性“field1”或“field2”

至于访问表单数据的第二种方法,以下几行失败,并出现一个错误,说明没有属性“req\u app\u qty.data”

print "QTY=", getattr(form, field1)   # fails  
如何创建字符串以访问这些表单属性

qty_rqst = form.field1.data           # fails
这不起作用,因为您试图访问不存在的字段
field1

print "QTY=", getattr(form, field1)   # fails
这不起作用,因为您试图访问不存在的字段
req\u X\u qty.data

print "QTY=", getattr(form, field1)   # fails
您需要访问现有的字段,例如

print 'QTY=', getattr(form, 'req_app_qty').data
这不起作用,因为您试图访问不存在的字段
field1

print "QTY=", getattr(form, field1)   # fails
这不起作用,因为您试图访问不存在的字段
req\u X\u qty.data

print "QTY=", getattr(form, field1)   # fails
您需要访问现有的字段,例如

print 'QTY=', getattr(form, 'req_app_qty').data

根据您的回答,我做了以下更改以解决此问题。。对于类别中的x:field1=“req_u%s_qty”%x#创建一个字符串来表示属性field2=“req_%s_note”%x#创建一个字符串来表示属性qty_rqst=getattr(表单,field1)。数据#现在起作用rqst_note=getattr(表单,field2)。数据#现在根据您的答案工作,我做了以下更改以解决此问题。。对于类别中的x:field1=“req_u%s_qty”%x#创建一个字符串来表示属性field2=“req_%s_note”%x#创建一个字符串来表示属性qty_rqst=getattr(表单,field1)。数据#现在可以工作了rqst#u note=getattr(表单,field2)。数据#