【问题标题】:Where do these "not-found" wagtail errors come from?这些“未找到”的鹡鸰错误来自哪里?
【发布时间】:2021-08-27 20:25:54
【问题描述】:

这是我运行 wagtail 的 Django v3.2 中的一部分 HTTP 日志。看起来 Django 试图告诉我丢失的媒体在哪里,但无法告诉我。因为这是一个带有“特色页面”的图库子图像的丛林页面,所以我的浏览器中的视图源不会显示图像文件尝试,但我假设它与配置错误的 MEDIA_ROOT 的 OP 的问题相同。奇怪的是,当我在 wagtail 管理员中打开子页面时,在页面的链接图像中没有看到任何错误。有谁知道为什么丢失的图像不会出现在 HTTP 日志中,或者是什么导致“媒体/未找到”替换导致 404 的“真实”项目,或者如何解开错误堆栈?我发现了多个“未找到”实例,但仅在 wagtail “site-packages”/lib/python3.8/site-packages/wagtail 文件夹中。他们都没有告诉我为什么导致 404 的页面(或通常是图像)没有在 HTTP 日志中返回,而只是“未找到”的 URL。我可以看到丢失的图像是什么(块的一部分),它实际上并没有丢失,但可能是页面的缓存副本导致“未找到”错误被替换。

[25/Aug/2021 20:28:53] "GET /static/wagtailadmin/images/bg-dark-diag.svg HTTP/1.0" 200 700

Not Found: /media/not-found [25/Aug/2021 20:29:18] "GET /media/not-found HTTP/1.0" 404 3252```

【问题讨论】:

    标签: django error-handling wagtail


    【解决方案1】:

    每当模板中包含图像时——无论是使用{% image %}标签,还是在富文本字段中——Wagtail都会创建原始上传图像的调整大小版本(存储在media/original_images中)并将其存储在media/images。然后在 <img> 标记中使用这个调整大小的图像的 URL。

    /media/not-found URL 表示调整图像大小时发生错误,很可能是因为磁盘上不存在源图像,因此无法创建最终调整大小的图像。 (当 Wagtail 站点在服务器之间移动时最常见,并且数据库已被复制但 media/original_images 中的图像还没有。)这样做是因为替代方案是 {% image %} 标签抛出一个错误,这将完全破坏页面 - 假设一个页面有一个损坏的图像总比没有页面好。

    【讨论】:

    • 感谢您的回复,这样做完全有意义。但是,对我来说,一种解决方法是完全删除所有再现,使用名为“delete_renditions”的 django 管理脚本,然后我能够从“original_images”中识别丢失的文件并替换它。你是对的,这与“服务器到服务器”副本有关,或者可能与“manage.py 转储数据”有关,以创建 bakerydemo.json,其中在“重新安装时间”时 base/media/original_images 中缺少相应的再现。”
    • 我仍然觉得在不“完全破坏页面”的情况下,可以在日志中添加带有违规内容的符号,这比微软石器时代的“找不到文件/来自 Wagtail 的 53" 错误(或者是 Django?)。