Python 在Django上提供静态文件

Python 在Django上提供静态文件,python,django,static,Python,Django,Static,我一直试图在Django项目中提供静态文件,但它无法找到或加载它。我尝试过不同的方法,但似乎都无法解决这个问题 静态文件夹与manage.py位于同一目录中 另外,我安装了WitheNoise,但它也没有解决问题 另外:我正在使用docker,我已经完成了收集静态数据并检查了容器。所有的文件都在那里 Django版本=2.0.1 开发环境 代码结构: 计划 - assets - config - docs - project-root - - static - - manage.py - - t

我一直试图在Django项目中提供静态文件,但它无法找到或加载它。我尝试过不同的方法,但似乎都无法解决这个问题

静态文件夹与manage.py位于同一目录中

另外,我安装了WitheNoise,但它也没有解决问题

另外:我正在使用docker,我已经完成了收集静态数据并检查了容器。所有的文件都在那里

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>
{%load static%}
让我知道,如果有什么我需要补充的职位,将帮助你。
谢谢,

问题中没有提到Django的版本,还有环境-(生产/开发)

-在python的最新版本中,建议使用{%load static%},而不是
{%load staticfiles%}

-如果
Debug为True
并且安装的应用程序中不存在
django.contrib.staticfiles
-

-将
django.contrib.staticfiles
添加到
INSTALLED\u应用程序中
或 将
static(settings.static\u URL,document\u root=settings.static\u root)
附加到
urlpatterns
以提供静态文件

  • 此外,对于不在应用程序文件夹中的静态文件,目录需要在STATICFILES\u DIRS中列出-

编辑
settings.py
文件,并将WhiteNoise添加到中间件列表中。WhiteNoise中间件应该直接放在Django SecurityMiddleware之后(如果您正在使用它),然后放在所有其他中间件之前

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',
  #(Rest of the Middleware here)
]
whitenoise缓存和静态文件的路由:

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

如果你想在docker容器中运行,这里有更多信息

有关Whitenoise的更多信息:


谢谢您的评论。即使做了改动,我还是找不到文件。错误依然存在……我编辑了我的问题,并提供了更多关于版本和结构的信息。嗯,我试图记住我在项目中使用了什么。您是否也在
设置.py
中启用了Whitenoise?我感谢你的帮助。但它没有解决问题,它仍然没有找到文件…我编辑了问题,提供了更多关于结构和版本的信息
django-admin collectstatic
python3 manage.py collecstatic