[英]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.