Python 在用户注册Django之后,如何运行函数

Python 在用户注册Django之后,如何运行函数,python,django,python-3.x,Python,Django,Python 3.x,我正在使用Django开发一个服务器,当一个用户注册运行一个函数,该函数将创建一个用户名为的目录时,我需要它。具有新用户名的文件夹将保存在集合中。我的代码如下: 型号.py 来自django.db导入模型的 来自django.contrib.auth.models 导入(BaseUserManager、AbstractBaseUser) 类UserManager(BaseUserManager): def create_user(自我、用户名、名、姓、电子邮件、密码=无): """ 使用给定的变

我正在使用Django开发一个服务器,当一个用户注册运行一个函数,该函数将创建一个用户名为的目录时,我需要它。具有新用户名的文件夹将保存在集合中。我的代码如下:

型号.py

来自django.db导入模型的

来自django.contrib.auth.models
导入(BaseUserManager、AbstractBaseUser)
类UserManager(BaseUserManager):
def create_user(自我、用户名、名、姓、电子邮件、密码=无):
"""
使用给定的变量和密码创建并保存用户。
"""
如果不是电子邮件:
raise VALUERROR('用户必须有电子邮件地址')
user=self.model(
电子邮件=自我规范化电子邮件(电子邮件),
用户名=用户名,
first_name=first_name,
姓氏=姓氏,
)
user.set_密码(password)
user.save(使用=self.\u db)
返回用户
def create_superuser(自我、用户名、名、姓、电子邮件、密码=None、is_admin=True):
"""
使用给定的变量和密码创建并保存超级用户。
"""
user=self.model(
电子邮件=自我规范化电子邮件(电子邮件),
用户名=用户名,
first_name=first_name,
姓氏=姓氏,
is_admin=is_admin,
)
user.set_密码(password)
user.save(使用=self.\u db)
返回用户
类用户(AbstractBaseUser):
email=models.EmailField(verbose_name='email address',max_length=255,unique=True)
username=models.CharField(最大长度=255,唯一性=True)
first_name=models.CharField(max_length=100,unique=False)
last_name=models.CharField(max_length=100,unique=False)
is_active=models.BooleanField(默认值=True,唯一值=False)
is_admin=models.BooleanField(默认值=False,唯一值=False)
user\u collection=models.CharField(最大长度=500,默认值='NotCreated',unique=False)
objects=UserManager()
用户名\字段='USERNAME'
必填字段=[“名字”、“姓氏”、“电子邮件”]
定义(自我):
返回self.username
def具有_perm(自我、perm、obj=无):
返回真值
def具有模块(自身、应用程序标签):
返回真值
@财产
def是_员工(自我):
返回self.is_admin
目录图像


有什么方法可以满足我的需要吗?

您可以在
用户
模型上创建一个模型方法,并使用python的
操作系统
模块为每个用户创建相应的目录

导入操作系统
从django.db导入模型
类用户(models.Model):
...
def将_添加到_集合(自身):
path=f'collections/{self.username}'
如果操作系统路径不存在(路径):
os.makedirs(路径)
#重写保存方法
def保存(自身、*args、**kwargs):
如果不是self.pk:
self.add_到_集合()
super().save(*args,**kwargs)

然后,
add_to_collections
model方法可以挂接到覆盖保存或post_保存信号中,并检查模型实例是否是第一次创建和保存的。

您可以在
User
模型上创建一个model方法,并使用python的
os
模块为每个用户创建相应的目录

导入操作系统
从django.db导入模型
类用户(models.Model):
...
def将_添加到_集合(自身):
path=f'collections/{self.username}'
如果操作系统路径不存在(路径):
os.makedirs(路径)
#重写保存方法
def保存(自身、*args、**kwargs):
如果不是self.pk:
self.add_到_集合()
super().save(*args,**kwargs)

然后,
add_to_collections
model方法可以挂接到覆盖的save或post_save信号中,检查模型实例是否是第一次创建和保存的。

你能帮我处理这些信号吗?@DeadSec你可以参考这篇博文;这里有很多Django代码片段的好例子。我相信他解释得比我好。他能发送一个信号来创建文件并正常保存吗?你能帮我处理这些信号吗?@DeadSec你可以参考这篇博文;这里有很多Django代码片段的好例子。我相信他解释得比我好。他能发送一个信号来创建文件并正常保存吗?