Python Django在本地主机上保存文件
我正在开发Django应用程序(DRF),但我是一名JS工程师,所以这对我来说是全新的 在我的models.py中,在任何实际模型之外,我都有:Python Django在本地主机上保存文件,python,django,django-models,Python,Django,Django Models,我正在开发Django应用程序(DRF),但我是一名JS工程师,所以这对我来说是全新的 在我的models.py中,在任何实际模型之外,我都有: storage = S3Storage(aws_s3_bucket_name=settings.DOCUMENTS_BUCKET) upload_location = 'recordings/' 这是一个用于其中一个模型的字段: zip_file = models.FileField( upload_to=upload_location, s
storage = S3Storage(aws_s3_bucket_name=settings.DOCUMENTS_BUCKET)
upload_location = 'recordings/'
这是一个用于其中一个模型的字段:
zip_file = models.FileField(
upload_to=upload_location, storage=storage, null=True)
这在生产中正常工作。但是,我希望能够在本地进行测试,在本地开发时添加这些zip文件。因此,我为存储
和上传位置
添加了以下内容:
if settings.DEBUG:
storage = FileSystemStorage(location='/')
upload_location = ''
然后,当我尝试从localhost上的admin保存文件时,出现以下错误:
[Errno 13] Permission denied: '/my-file.zip'
如果我做对了,应用程序就不能在我的文件系统的某个地方创建那个位置。也许我错了。我该如何解决这个问题呢?我建议您看看。
使用用于本地主机的文件系统和用于生产的S3,您可以轻松地在模型上保存文件。
所有配置都将处于设置状态,因此您无需再放置IFs。我建议您查看。
使用用于本地主机的文件系统和用于生产的S3,您可以轻松地在模型上保存文件。
所有配置都将处于设置状态,因此您不再需要放置IFs。传递到
文件字段的位置相对于媒体根目录
,除非它以斜杠开头。如果它以斜线开头,则这是一条绝对路径,与驱动器的根相对
因此,location='/'
表示硬盘的根目录(因此存在权限问题)
您可以使用/
使用媒体根目录
,但通常最好根据一些标准对资产进行分组。例如,对于名为SomeModel
的模型,将资产放置在类似location='some-models/'
的位置,传递到FileField
中的位置相对于媒体根
,除非它以斜杠开头。如果它以斜线开头,则这是一条绝对路径,与驱动器的根相对
因此,location='/'
表示硬盘的根目录(因此存在权限问题)
您可以使用/
使用媒体根目录
,但通常最好根据一些标准对资产进行分组。例如,对于名为SomeModel
的模型,将资产放置在类似location='some-models/'
的位置。是否检查了文件夹权限?如果没有,请设置文件夹权限以允许创建文件…因为这是文件系统存储,/
直接引用文件系统的根目录。你确定那是你要存放东西的地方吗?当然MEDIA\u ROOT
会是一个更好的地方。看看这个问题的答案:@DanielRoseman出于某种原因,我认为/
指的是当前正在运行的项目的根,我已经更改了这些权限。现在修改了路径,很好。谢谢!你检查文件夹权限了吗?如果没有,请设置文件夹权限以允许创建文件…因为这是文件系统存储,/
直接引用文件系统的根目录。你确定那是你要存放东西的地方吗?当然MEDIA\u ROOT
会是一个更好的地方。看看这个问题的答案:@DanielRoseman出于某种原因,我认为/
指的是当前正在运行的项目的根,我已经更改了这些权限。现在修改了路径,很好。谢谢!