我正在将一个网站从WordPress迁移到Django / Wagtail。我的media
目录中包含了所有旧的WP内容。这一切都得到了适当的服务。
为了在内容中硬编码的旧媒体网址,将其他网址(特别是/wp-content/
)映射到MEDIA_ROOT
会很方便。
例如,//example.com/media/uploads/2017/12/IMG_2120.jpg
现在提供的已迁移资产也可以从//example.com/wp-content/uploads/2017/12/IMG_2120.jpg
提供
我确信有一些明显的方法可以做到这一点(在urls.py
中?)但完全是空白。
答案 0 :(得分:3)
我确信你已经知道应该使用前端服务器(如Nginx)提供静态/媒体文件,因为它已在文档中的很多地方被提及过。
那么,如果Django不提供文件,为什么需要MEDIA_ROOT
和MEDIA_URL
设置?
MEDIA_ROOT
是Django存储您上传的图像/文件的地方。
MEDIA_URL
生成文件URL。例如,如果MEDIA_URL = '/media/'
,那么如果你执行{{ image.url }}
,Django会生成这样的网址 - /media/image.jpg
。
但Django不提供文件。你的前端服务器。所以,你要做的是,你像这样配置你的前端服务器:
if request path starts with /media/:
map it to <media directory>
基本上,您告诉您的前端服务器为<media directory>
的每个请求提供来自/media/
的内容。这样,以/media/
开头的请求实际上从未到达您的Django应用程序,因为您的服务器正在处理它们。
我的意思是你可以配置你的前端服务器将/wp-content/uploads/
映射到你的<media directory>
,它将提供文件。