Flask-security创建角色,用户并将user_id链接到role_id

时间:2014-03-14 15:59:38

标签: python-3.x flask flask-sqlalchemy flask-wtforms flask-security

我使用Flask-Security和SQLAlchemy

何时想要添加用户或角色

def addrole():
        form=addroll()
        createRole=user_datastore.create_role(name=form.role.data,description=form.description.data)
        db.session.add(createRole)
        db.session.commit()
在mysql表中添加一个记录属于我的创建和两个或树空白记录同样的想法发生在我想创建用户时 要将用户与角色相关联,我有以下内容:

   @app.route('/addR', methods=['GET', 'POST'])
   @login_required
   def addR():
      email1=request.form['emails']
      role1=request.form['role2']
      user = user_datastore.find_user(email=request.args.get('email1'))
      role = user_datastore.find_role(request.args.get('role1'))
      user_datastore.add_role_to_user(user, role)
      db.session.commit()
      return  redirect('/addroletouser' )

它在roles_users表中链接了错误的user_id和role_id。

1 个答案:

答案 0 :(得分:3)

将Flask-Security与SQLAlchemy一起使用时,您无需手动链接记录,您可以使用create_role中的create_useruser_datastore。 这与您用于初始化Flask-Security的user_datastore相同。 一个简单的例子(请不要使用纯文本密码):

def seed():
  user_datastore.create_role(name='admin')
  user_datastore.create_user(username='admin', email='admin@example.com',
                             password='admin', roles=['admin'])