我继承了Wagtail CMS项目,但一直无法解决有关文件上传的问题。
通过CMS上传文件后,文件到达documents目录/var/www/example.com/wagtail/media/documents/test_pdf.pdf
,该目录Map到Docker容器内的/usr/src/app/media/documents/test_pdf.pdf
目录。
在前端(以及Wagtail控制面板内),document. url解析为https://example.com/documents/9/test_pdf.pdf/
,返回404。显然,上面的文件路径中缺少型号段,但我读取到on a forum
在Wagtail中,文档总是通过Django视图(wagtail.wagtaildocs.views. serve. serve)提供,这样我们就可以对文档下载执行额外的处理
因此,这本身也许不是一个问题。urls.py
文件中有几行看起来是正确的:
urlpatterns = [
url(r'^django-admin/', admin.site.urls),
url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),
url(r'^search/$', search_views.search, name='search'),
url(r'^sitemap\.xml$', sitemap),
url(r'', include(wagtail_urls)),
# url(r'^pages/', include(wagtail_urls)),
]
if settings.DEBUG:
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在base.py
中
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/
所以,我的直觉是:
1.上传内容存储不正确,存储在单个文件夹中,而不是按型号存储在子目录中
1.到这个"虚拟"目录的路由被破坏了,所以它在"检查权限"阶段就被破坏了(但是我不知道路由在Django中是如何工作的),并返回404
- Web服务器配置不正确,所以虽然"虚拟" URL是好的,但实际上是文件URL坏了,这导致了404(我的nginx包含一个/media/location,但没有/documents/location,正如我所期望的)
1.完全是另一回事(我的下一步是将副本拉到我自己的机器上,看看问题是否仍然发生)
我很感激这里没有太多要做的,但是我希望有人能给我一些建议,告诉我还应该检查什么,因为我已经用头撞了一天的大部分时间。
我的背景是Ruby on Rails,所以,就像那个框架一样,我有一种感觉,在幕后发生了很多"魔法",这使得弄清楚发生了什么非常棘手。
谢谢!
1条答案
按热度按时间f87krz0w1#
您可以在开发时查看文档,因为
与
static
文件一样,media
文件应在服务器级别处理。例如,如果您使用GCP,则需要更新app.yaml
,并以与static/
相同的方式添加media/