django-storages +专用S3存储桶-如何使用户名成为文件夹名称?

休闲编码器

我正在使用django-storages和私有S3存储桶来存储用户上传的内容。我想要以下文件夹结构:

/uploads/someuser321/20190112-123456/

我显然知道如何进行时间戳记(2019-01-12 at 12:34:56),但是如何将用户的用户名放入路径中呢?我的模型当前如下所示:

user_file = models.FileField(
    upload_to="uploads", 
    storage=PrivateMediaStorage(), 
    null=True, blank=True)

我可以为日期时间/时间戳添加一个f字符串。我了解这一点,而且我知道该怎么做。但是如何将用户的用户名也添加为文件夹?我需要从视图中以某种方式访问​​它,以便知道谁是request.user,但是我什至会怎么做?

somecallitblues

您需要在upload_to内部进行函数调用。这是一个可以为您提供路径的函数:

def get_file_path(instance, filename):
    today = localtime(now()).date()
    return '{0}/uploads/{1}/{2}'.format(instance.user.username, today.strftime('%Y/%m/%d'), filename)

然后,您需要在模型中这样称呼它:

user_file = models.FileField(
    upload_to=get_file_path, 
    storage=PrivateMediaStorage(), 
    null=True, blank=True)

您需要修复该return语句以获取所需的格式,但是可以做到这一点。Django会自动将实例传递给您的函数和文件名。

希望对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 django-storages 进行 S3 版本控制

如何设置django-storages?

使用 django_storages 将枕头对象保存到 S3

如何在Django Restfull API中使用用户名和ID创建存储文件夹

Django检索S3存储桶中的文件列表

Django使用按钮创建S3存储桶

将Azure存储SDK与Django结合使用(并完全消除对django-storages的依赖)

django collectstatic与django-storages重新复制所有文件

Django-storages-redux:无法导入名称“设置”

使用存储桶名称“”时,Django AWS S3证书无效。

如何在Django中从S3存储桶下载媒体文件

使用Terraform为Django静态文件配置AWS S3存储桶

静态文件未使用 cookiecutter-django 保存在 S3 存储桶上

如何在动态Amazon S3存储桶中使用Django FileField?

将文件上传到S3存储桶-Python Django

如何从 AWS s3 存储桶中提取或读取 Django 中的图像以供 OpenCV 处理?

如何在AWS Elastic Beanstalk中托管的Django应用的S3存储桶中保存Django日志文件

如何在不使用AWS CLI的情况下使用S3专用存储桶下载文件

专用S3存储桶的预签名URL显示AWS访问密钥ID和存储桶名称。这是安全问题吗?

亚马逊S3存储桶名称

ImportError:没有名为自定义存储的模块-django-storages boto

Amazon S3存储桶策略,允许用户写入存储桶,但仅限该存储桶

如何使用Terraform在Amazon S3存储桶中创建文件夹

Django 在单击按钮时删除 S3 存储桶

将文件列表从 S3 存储桶复制到 S3 存储桶

从boto3检索S3存储桶中的子文件夹名称

在Heroku上使用Django将大型文件上传到AWS S3存储桶而没有30s请求超时

对用户组的AWS访问S3存储桶的文件夹

如何从Amazon S3存储桶中的文件夹中获取所有文件?