在 Flask 中跟踪用户 Activity 的实现
Implementation For Keeping Track of User Activity in Flask
我正在尝试以一种我可以创建每个用户创建的用户的方式创建模型。到目前为止,我有一个用户模型:
class User(db.Model):
__tablename__ = "usersTable"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(128), nullable=False)
password = db.Column(db.String(255), nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
这是我的创建用户函数:
const createUser = (values) => {
const data = { refresh: window.localStorage.getItem('refreshToken') };
axios
.post(`${SERVICE_URL}/api/v1/auth/token/refresh`, data)
.then((res) => {
const config = { headers: {'Authorization': `Bearer ${res.data.access}`}};
axios
.post(`${SERVICE_URL}/api/v1/users`, values, config)
.then((res) => {
setRedirect(true);
})
.catch((err) => {
setRedirect(false);
setType('danger');
setText('Unable to create user. Does this username already exist?');
});
})
.catch((err) => {
setRedirect(true);
});
};
如何修改此模型以便每个用户都可以跟踪他们创建的用户?
我已经研究过创建一个 pickled 属性,但我认为这对于这个问题来说过于复杂
为确保我没弄错,您正在尝试创建一个应用程序的用户模型,您希望在其中跟踪哪个用户创建了哪个用户??
您提到每个用户都会跟踪他们创建的用户。
因此我们可以添加一个额外的字段来存储哪个用户创建了新用户。
该字段可以是字符串字段,模型如下:
class User(db.Model):
__tablename__ = "usersTable"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(128), nullable=False, unique=True) # making username unique.
password = db.Column(db.String(255), nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
CreatedBy = db.Column(db.String(128), default="", nullable=False) # TO STORE THE USERNAME OF THE USER WHO CREATED THIS USER.
usersCreated = db.Column(db.ARRAY(db.String(128)), default=[])
现在假设您的应用程序中有一个显示用户列表的页面。单击单个用户按钮后,我们将被重定向到显示有关用户信息的页面。因此,要获取我们点击的用户创建的所有用户的列表,可以使用以下语句来完成。
usersCreatedByThisPerson = User.query.filter_by(CreatedBy = <name of the person who was clicked on>).all()
此 returns Users 模型的实例列表。
不知道我是否回答了你的问题。回答的时候要假设很多事情。
如果我没有回答您的问题,请告诉我。谢谢
好的,所以根据您的评论编辑答案。
我们要做的是在模型中,我们将添加另一列来存储该用户创建的所有用户的用户名。
我们将如何做?
在 POST Api 中,我们将发送这个、用户名、密码、CreatedBy,然后我们将相应地更新用户 table。
假设 json 是:
{
"username": usernameLatest,
"password": password,
"CreatedBy": usernameOld
}
现在在 post API 中,我们将在 usersCreated 列中的 username=usernameOld 的行中追加 usernameLatest。
所以在 post API 中,我们将做这样的事情:
oldUserInstance = Users.query.filter_by(username=usernameOld).first() # since username is unique, we just want the first one.
list(oldUserInstance.usersCreated).append(usernameLatest)
这样,我们可以不断更新当前用户创建的所有用户。
让我知道是否清楚。
谢谢。
我正在尝试以一种我可以创建每个用户创建的用户的方式创建模型。到目前为止,我有一个用户模型:
class User(db.Model):
__tablename__ = "usersTable"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(128), nullable=False)
password = db.Column(db.String(255), nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
这是我的创建用户函数:
const createUser = (values) => {
const data = { refresh: window.localStorage.getItem('refreshToken') };
axios
.post(`${SERVICE_URL}/api/v1/auth/token/refresh`, data)
.then((res) => {
const config = { headers: {'Authorization': `Bearer ${res.data.access}`}};
axios
.post(`${SERVICE_URL}/api/v1/users`, values, config)
.then((res) => {
setRedirect(true);
})
.catch((err) => {
setRedirect(false);
setType('danger');
setText('Unable to create user. Does this username already exist?');
});
})
.catch((err) => {
setRedirect(true);
});
};
如何修改此模型以便每个用户都可以跟踪他们创建的用户?
我已经研究过创建一个 pickled 属性,但我认为这对于这个问题来说过于复杂
为确保我没弄错,您正在尝试创建一个应用程序的用户模型,您希望在其中跟踪哪个用户创建了哪个用户??
您提到每个用户都会跟踪他们创建的用户。
因此我们可以添加一个额外的字段来存储哪个用户创建了新用户。 该字段可以是字符串字段,模型如下:
class User(db.Model):
__tablename__ = "usersTable"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(128), nullable=False, unique=True) # making username unique.
password = db.Column(db.String(255), nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
CreatedBy = db.Column(db.String(128), default="", nullable=False) # TO STORE THE USERNAME OF THE USER WHO CREATED THIS USER.
usersCreated = db.Column(db.ARRAY(db.String(128)), default=[])
现在假设您的应用程序中有一个显示用户列表的页面。单击单个用户按钮后,我们将被重定向到显示有关用户信息的页面。因此,要获取我们点击的用户创建的所有用户的列表,可以使用以下语句来完成。
usersCreatedByThisPerson = User.query.filter_by(CreatedBy = <name of the person who was clicked on>).all()
此 returns Users 模型的实例列表。
不知道我是否回答了你的问题。回答的时候要假设很多事情。
如果我没有回答您的问题,请告诉我。谢谢
好的,所以根据您的评论编辑答案。
我们要做的是在模型中,我们将添加另一列来存储该用户创建的所有用户的用户名。
我们将如何做?
在 POST Api 中,我们将发送这个、用户名、密码、CreatedBy,然后我们将相应地更新用户 table。
假设 json 是:
{
"username": usernameLatest,
"password": password,
"CreatedBy": usernameOld
}
现在在 post API 中,我们将在 usersCreated 列中的 username=usernameOld 的行中追加 usernameLatest。
所以在 post API 中,我们将做这样的事情:
oldUserInstance = Users.query.filter_by(username=usernameOld).first() # since username is unique, we just want the first one.
list(oldUserInstance.usersCreated).append(usernameLatest)
这样,我们可以不断更新当前用户创建的所有用户。
让我知道是否清楚。
谢谢。