当 django 正在寻找静态文件时,我不断收到 404 错误
I keep getting a 404 error when django is looking for static files
当 django 寻找静态文件时,我总是收到 404 错误。
settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'business', 'static_cdn')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'business', 'static'),
]
app的项目树结构
- business
-- migrations
--- ....
-- static_cdn
--- business
---- main.css
---- scripts.js
-- templates
--- business
---- base.html
---- home.html
-- templatetags
--- ...
-- __init__.py
-- admin.py
-- apps.py
-- models.py
-- tests.py
-- urls.py
-- views.py
错误
[29/Jul/2019 13:09:45] "GET / HTTP/1.1" 200 12670
[29/Jul/2019 13:09:45] "GET /static_cdn/business/main.css HTTP/1.1" 404 77
[29/Jul/2019 13:09:45] "GET /static_cdn/business/scripts.js HTTP/1.1" 404 77
我也 link 到像 {% static 'business/main.css' %}
这样的静态文件,我的文档顶部确实有 {% load static %}
。
为什么 django 找不到静态文件?该错误表明它正在寻找正确的位置,但它返回 404 错误。
如果还有什么需要可以看我的code
注:
我认为 django 无法 read 这个文件,但我不知道为什么...... Collectstatic 把所有 static_cdn/
进入同一应用程序目录中的 static/
。
将您的静态文件夹重命名为 static_cdn 并更新 settings.py
settings.py
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_cdn'),
]
即这个结构:
app的项目树结构
- business
-- migrations
--- ....
-- static_cdn
--- business
---- main.css
---- scripts.js
-- templates
--- business
---- base.html
---- home.html
-- templatetags
--- ...
-- __init__.py
-- admin.py
-- apps.py
-- models.py
-- tests.py
-- urls.py
-- views.py
在您的代码中,您定义了 BASE_DIR 如下
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
这意味着它指向根文件夹,而您的 static_cdn 文件夹位于 business 文件夹
在下面定义时,您必须将 STATIC_ROOT 和 STATICFILES_DIRS[=25 的业务文件夹中的路径更新为=]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_cdn'),
]
如下
STATIC_ROOT = os.path.join(BASE_DIR, 'business', 'static')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'business', 'static_cdn'),
]
您可能已将 DEBUG 设置为 False。当且仅当您在开发环境中时,将 DEBUG 设置为 True。如果您计划进行生产,请先执行 collectstatic 并在 settings.py 中进行适当的更改并将 DEBUG 设置回 False。请参阅 Django 文档和您的生产服务器文档。也不要忘记重新启动服务器。
祝福。
当 django 寻找静态文件时,我总是收到 404 错误。
settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'business', 'static_cdn')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'business', 'static'),
]
app的项目树结构
- business
-- migrations
--- ....
-- static_cdn
--- business
---- main.css
---- scripts.js
-- templates
--- business
---- base.html
---- home.html
-- templatetags
--- ...
-- __init__.py
-- admin.py
-- apps.py
-- models.py
-- tests.py
-- urls.py
-- views.py
错误
[29/Jul/2019 13:09:45] "GET / HTTP/1.1" 200 12670
[29/Jul/2019 13:09:45] "GET /static_cdn/business/main.css HTTP/1.1" 404 77
[29/Jul/2019 13:09:45] "GET /static_cdn/business/scripts.js HTTP/1.1" 404 77
我也 link 到像 {% static 'business/main.css' %}
这样的静态文件,我的文档顶部确实有 {% load static %}
。
为什么 django 找不到静态文件?该错误表明它正在寻找正确的位置,但它返回 404 错误。
如果还有什么需要可以看我的code
注:
我认为 django 无法 read 这个文件,但我不知道为什么...... Collectstatic 把所有 static_cdn/
进入同一应用程序目录中的 static/
。
将您的静态文件夹重命名为 static_cdn 并更新 settings.py
settings.py
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_cdn'),
]
即这个结构:
app的项目树结构
- business
-- migrations
--- ....
-- static_cdn
--- business
---- main.css
---- scripts.js
-- templates
--- business
---- base.html
---- home.html
-- templatetags
--- ...
-- __init__.py
-- admin.py
-- apps.py
-- models.py
-- tests.py
-- urls.py
-- views.py
在您的代码中,您定义了 BASE_DIR 如下
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
这意味着它指向根文件夹,而您的 static_cdn 文件夹位于 business 文件夹
在下面定义时,您必须将 STATIC_ROOT 和 STATICFILES_DIRS[=25 的业务文件夹中的路径更新为=]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_cdn'),
]
如下
STATIC_ROOT = os.path.join(BASE_DIR, 'business', 'static')
STATIC_URL = '/static_cdn/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'business', 'static_cdn'),
]
您可能已将 DEBUG 设置为 False。当且仅当您在开发环境中时,将 DEBUG 设置为 True。如果您计划进行生产,请先执行 collectstatic 并在 settings.py 中进行适当的更改并将 DEBUG 设置回 False。请参阅 Django 文档和您的生产服务器文档。也不要忘记重新启动服务器。 祝福。