小编Chi*_*Sql的帖子

如何在WTForms中生成动态字段

我试图根据本文档在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中没有办法做到这一点?

python flask wtforms

18
推荐指数
3
解决办法
2万
查看次数

在Flask中,如何使用安全会话通过curl对用户进行身份验证?

我正在使用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)

python rest curl flask

2
推荐指数
1
解决办法
2293
查看次数

标签 统计

flask ×2

python ×2

curl ×1

rest ×1

wtforms ×1