我正在使用这个Flask应用程序(数据分析仪表板),我正在使用Flask-User来处理授权,注册和登录。关于自定义Flask-User的注册过程,我有几个问题:
除了密码重置之外,我不打算用电子邮件做很多事情。因此,我可以禁用电子邮件确认/帐户确认并在注册后使帐户已经激活/准备好,这样我的用户就不必经历这个了吗?
只有管理员才能访问注册表单。他们将是唯一能够向系统添加新用户的人。 (我是通过roles_required
装饰器完成的)我想要完成的是将角色信息放在同一个注册页面中,以便在注册新用户时将其保存到我的UserRoles
表中。从文档中,我知道如何在注册表单中添加新字段,这些字段应该出现在User
或UserProfile
模型中。如何在注册页面中添加另一个表单并将字段保存到我的UserRoles
表中?我还想过自定义USER_AFTER_REGISTER_ENDPOINT
端点以指向一个视图,以便向我刚注册的用户添加其他信息 - 这样可以避免弄乱register()
视图。但是,我不知道如何将这个新视图传递给我刚刚注册的用户的ID。
如果这个解释仍然令人困惑,请告诉我。我会尽力让它更清楚。
谢谢!
修改:我的User
,Roles
和UserRoles
表格均遵循Flask-User reference中列出的内容。
此问题特定于Flask-User扩展程序。
答案 0 :(得分:0)
好的,从我收集的内容中你有两张桌子 - 1)用户配置/用户 2)的UserRole
现在我不知道你是如何设置models.py文件的。如果你能够更多地了解这一点,那将会有所帮助。 但是,让我尽力回答我的能力。
添加从User到UserRoles的一对多关系,以便一个用户可以拥有多个角色(比如编辑,更新,删除等)。
您可以使用SQLAlchemy中的backref函数添加一对多关系。 例如 -
class User(Base):
__tablename = 'user'
column1 = Column(Integer,primary_key = true, nullable = false)
columnUsername = Column(String(20))
并将您的userprofile定义为
class UserRole(Base):
__tablename__ = 'userrole'
userprofileID = Column(Integer,nullable = False,primary_key=true)
column1role = Column(String(20))
columnForeignKey = Column(Integer,ForeignKey(user.columnUsername))
user = relationship("User",backref=backref('userrole'))
#the above line adds a one to many relationship
现在,当您开始从字段中添加数据时(在烧瓶中),您需要先通过 -
获取用户user = User(columnUsername = 'someuser')
user1 = User() #create an object of User class
user1.columnUsername = user #what you just defined(can be got from the textbox of entered name)
session.add(user1)
#now get the role you want to add assuming you have defined them already
role1 = session.query(UserRole)filter(UserRole.column1role = 'somePredefinedRole'
role2 = session.query(UserRole)fileter(UserRole.column1role='someOtherrole'
#this adds two user roles to the specific user
user1.userrole.append(role1)
user1.userrole.append(role2)
session.add(user1)
session.commit()
这就是我要做的事情。 我不确定这是不是你想要的。
需要注意的是,您不必担心烧瓶,而是关于您正在使用的ORM(我更喜欢SQLAlchemy)。 如果你能掌握ORM,那么你几乎可以解决这些问题。 请原谅我,如果我误解了你的问题,并且一无所获。
干杯