Django -在开发过程中总是从远程MEDIA_URL而不是本地MEDIA_URL访问静态/媒体文件



我有一个Django应用程序在服务器上运行,我想继续使用runserver命令在本地工作。我的问题是关于使用常见的静态和媒体文件。媒体每当我想在本地开发时,我必须从服务器下载这些媒体文件,并将它们添加到我计算机上的MEDIA_ROOT路径。

数据库对于开发环境和生产环境都是通用的,因为它是我服务器上的MySQL主机。

我如何告诉Django在本地模式下从我的域名而不是localhost上查找远程url上的静态和媒体文件?比如https://example.com/media/,而不是:https://127.0.0.1:8000/media/

EDIT: module django-storage

过了一段时间后,我终于找到了一个模块,似乎与我正在寻找的一致,django-storage与它的"FTP"功能"但是文档真的很弱,我找不到任何教程来解释我想要实现的。

DEFAULT_FILE_STORAGE = 'storages.backends.ftp.FTPStorage'
FTP_STORAGE_LOCATION = 'ftp://user:password@host:21/media'

当我在本地工作时,我应该在我的设置文件中添加什么样的配置来让MEDIA_ROOT查找这个位置?

我真的不明白为什么static文件必须被同样对待-它们应该是您的项目的一部分. 所以本地存储应该有更高的优先级。

但是服务任何这样的文件仍然只是URL调度,所以不要这样:

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

你可以尝试这样做:

urlpatterns += [
path(settings.MEDIA_URL + "<path:file_path>", RedirectView.as_view(url="https://example.com/media/%(file_path)"))
]

(未测试)

RedirectView docs几乎类似的问题

您只需在主url后进行测试

if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
else:
Production

相关内容

  • 没有找到相关文章

最新更新