我一直在尝试在Django项目中提供静态文件,但是无法找到或加载它。我尝试了不同的方法,但是似乎没有一个方法可以解决该问题。
静态文件夹与manage.py在同一目录中。
我还安装了WitheNoise,但它也不能解决问题。
此外:我正在使用docker,我已经完成了collect static并检查了容器。所有文件都正确存在。
Django版本= 2.0.1
开发环境
代码结构:
项目
- assets
- config
- docs
- project-root
- - static
- - manage.py
- - templates
- - apps
- - project-root
- - - settings.py
- - - urls.py
...
...
setting.py
INSTALLED_APPS = [
'pages.apps.PagesConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
html文件
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- Bootstrap -->
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}">
<link rel="stylesheet" href="{% static "css/jquery.bxslider.css" %}">
<!-- Custom -->
<link rel="stylesheet" href="{% static "css/style.css" %}">
<link rel="stylesheet" href="{% static "css/animate.css" %}">
</head>
让我知道是否需要在帖子中添加其他内容,以帮助您。 谢谢
答案 0 :(得分:0)
问题中未提及Django的版本,也未提及环境-(生产/开发)
-在最新版本的python中,建议使用{%load static%}而不是{% load staticfiles %}
-如果Debug is True
和django.contrib.staticfiles
在INSTALLED_APP中不存在-
-将django.contrib.staticfiles
添加到INSTALLED_APP
要么
将static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
附加到urlpatterns
以提供静态文件。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
'any_other_locations',
]
答案 1 :(得分:0)
编辑您的settings.py
文件,并将WhiteNoise添加到MIDDLEWARE列表中。 WhiteNoise中间件应直接放置在Django SecurityMiddleware之后(如果使用的话),然后放在所有其他中间件之前。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
#(Rest of the Middleware here)
]
白噪声缓存和静态文件的路由:
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
并运行collectstatic
django-admin collectstatic
或
python3 manage.py collecstatic
如果您想在docker容器中运行,这里是更多信息
https://docs.docker.com/engine/reference/commandline/exec/
有关Whitenoise的更多信息: