我使用amazons3作为我的web服务的一部分。工作流程如下:
somedbrecord.result_file.url
要处理文件,我使用QueuedStorage
后端。我这样开始我的FileFields
:
user_uploaded_file = models.FileField(..., storage=queued_s3storage, ...)
result_file = models.FileField(..., storage=queued_s3storage, ...)
其中queued_s3storage
是从...backends.QueuedStorage
派生的类对象,remote
字段设置为'...backends.s3boto.S3BotoStorage'
。在
现在我计划将整个系统部署到一台机器上,以便在本地运行所有东西,我想用基于本地文件系统的东西来替换这个'...backends.s3boto.S3BotoStorage'
。在
第一个解决方法是使用FakeS3,它可以在本地“模拟”S3。工作,但这并不理想,只是额外的不必要的开销。在
我有Nginx服务器在运行和提供来自特定目录的静态文件。如何创建我的“远程存储”类,它实际上在本地存储文件,但提供指向Nginx服务的文件的下载链接?(类似于http://myip:80/filedir/file1
)。在django中有标准的库类吗?在
那就停止使用
QueuedStorage
,因为{a1}而且你刚刚说你不想要遥控器。在只需使用^{} 并配置nginx来服务
location
/settings.MEDIA_ROOT
媒体文件的默认存储后端是本地存储。在
您的
settings.py
定义了以下两个环境变量:MEDIA_ROOT
(link to docs)这是本地文件存储文件夹的绝对路径MEDIA_URL
(link to docs)这是web服务器的HTTP路径(例如'/media/'
或{默认存储后端使用这些文件来保存媒体文件。从Django的默认/globalsettings.py:
此配置的默认存储在
FileFields
中使用,但没有为其提供存储kwarg
。也可以这样访问它:rom django.core.files.storage import default_storage
。在因此,如果您想改变存储以供本地开发和生产使用,可以执行以下操作:
^{pr2}$在您的模型中:
最后,您希望nginx直接从您的
MEDIA_URL
为文件提供服务。只需确保nginxurl与MEDIA_URL
中的路径匹配。在相关问题 更多 >
编程相关推荐