为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

2024-06-20

当我使用内置的简单服务器时,一切正常,管理界面很漂亮:

python manage.py runserver

但是,当我尝试使用 wsgi 服务器为我的应用程序提供服务时django.core.handlers.wsgi.WSGIHandler,Django 似乎忘记了管理媒体文件在哪里,并且管理页面根本没有样式:

gunicorn_django

这怎么发生的?


当我查看Django的源代码时,我找到了原因。

在某处django.core.management.commands.runserver模块,一个WSGIHandler对象是 包裹在一个AdminMediaHandler.

根据该文件,AdminMediaHandler is a

拦截调用的WSGI中间件 到管理媒体目录,如 由 ADMIN_MEDIA_PREFIX 设置定义,并提供这些图像。 仅在本地使用此功能以进行开发!这个还没有测试过 为了 安全性并且效率不是很高。

这就是为什么管理媒体文件只能在我使用测试服务器时自动找到的原因。

现在我只需继续手动设置管理媒体 url 映射:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件? 的相关文章

随机推荐