django - 在 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 也会出现相同的错误。
有人可以帮我弄清楚我的错误可能是什么。
解决方案
似乎当 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}),
]
推荐阅读
- c++ - constexpr 静态成员函数用法
- google-cloud-messaging - 用于推送通知 Android 的 GCM 到 FCM 迁移
- maven - 带有 IntelliJ 的 Maven - 构建过程失败,因为无法解决依赖关系
- java - Java 执行 runas 命令并在提示时提供密码:“管道正在关闭错误”
- c++ - 对 boost::system 的未定义引用
- cordova - Ionic 4 键盘覆盖输入字段
- javascript - 在 Firestore 中获得 x 结果后如何做出停止承诺
- python - 是否可以在python中连续读取数据库?
- android - 在 Kotlin 构造函数 android 中从 Parcelable 中读取列表列表
- android - Android App Bundle 功能不匹配