我试图根据本文档在WTForms中生成具有动态字段的表单http://wtforms.simplecodes.com/docs/1.0.2/specific_problems.html#dynamic-form-composition
我有这个子表单类,允许用户从列表中选择要购买的项目:
class Item(Form):
itmid = SelectField('Item ID')
qty = IntegerField('Quantity')
class F(Form):
pass
Run Code Online (Sandbox Code Playgroud)
将有多个类别的购物项目,因此我想根据用户将选择的类别生成动态选择字段:
fld = FieldList(FormField(Item))
fld.append_entry()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
AttributeError: 'UnboundField' object has no attribute 'append_entry'
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者在WTForms中没有办法做到这一点?
我正在使用Flask构建一个RESTful应用程序,它将使用会话来跟踪登录用户.这是我从这个Flask教程改编的登录代码
@mod.route('/login/', methods=['GET', 'POST'])
def login():
user = User.query.filter_by(email=request.json['email']).first()
# we use werkzeug to validate user's password
if user and check_password_hash(user.password, request.json['password']):
# the session can't be modified as it's signed,
# it's a safe place to store the user id
session['user_id'] = user.id
resp = jsonify({'status':'authenticated'})
else:
resp = jsonify({'status':'Invalid usernam/password'})
resp.status_code = 401
return resp
Run Code Online (Sandbox Code Playgroud)
当用户首次登录时,我将他们的用户ID存储在会话中,这样当同一用户请求资源时,数据就会适合他们:
@mod.route('/address/')
@requires_login
def user_data():
user = User.query.filter_by(id=session['usr_id']).first
resp = jsonify(user.address)
return resp
Run Code Online (Sandbox Code Playgroud)
如果我在登录后发出此命令:
curl http://localhost:5000/address/
Run Code Online (Sandbox Code Playgroud)
我收到:
{"status": 401, "message": "Unauthorized"} …Run Code Online (Sandbox Code Playgroud)