繁体   English   中英

Django 静态文件在 Microsoft Azure 中生产后出现 404 错误

[英]Django static files giving 404 error after production in Microsoft Azure

我的 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 未找到错误,尽管静态文件夹具有 admin css,但即使 admin css 也会出现相同的错误。

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

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

我通过将 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}), 
]

我遇到了同样的问题,但幸运的是我能够根据上述答案解决它。 但是,它需要稍作更改。 django==3.0.8 的工作解决方案

settings.py 确保它像:

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

urls.py 需要像:

from django.contrib import admin
from django.urls import include, path, re_path
from django.views.static import serve
from django.conf import settings

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM