首页 > 解决方案 > 在 Microsoft Azure 中生产后,Django 静态文件出现 404 错误

问题描述

我的 settings.py 包含以下代码:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


DEBUG = False

STATIC_URL = '/static/'

STATIC_ROOT = 'D:/home/site/wwwroot/static'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
    )

将我的代码推送到 github 后,我在 Azure 中部署了 github 代码,然后我在我的 Azure 资源的 Web 控制台中运行“manage.py collectstatic --noinput”,当我运行我的项目 url 时,静态文件仍然给出 404 找不到错误,尽管静态文件夹具有管理员 css,但即使管理员 css 也会出现相同的错误。

有人可以帮我弄清楚我的错误可能是什么。

标签: djangoazuredjango-admindjango-staticfiles

解决方案


似乎当 DEBUG=False 时未定义 STATIC_ROOT 的静态文件 URL,因此必须在 url.py 中明确定义一个指向 STATIC_ROOT 的静态文件夹的 URL。

我通过将 settings.py 中的以下代码更改为:

STATIC_URL = '/static/'

STATIC_ROOT= os.path.join(BASE_DIR,'static-files')

STATICFILES_DIRS = [
    'D:/home/site/wwwroot/static',
    os.path.join(BASE_DIR,'static'),
]

然后我将以下内容添加到我的 urls.py 中:

from django.views.static import serve
from django.conf import settings

urlpatterns = [
    url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}), 
]

推荐阅读