在Django上提供静态文件

问题描述 投票:0回答:2

我一直在尝试在Django项目中提供静态文件,但是找不到或加载了它。我尝试了不同的方法,但是似乎都没有解决该问题的方法。

静态文件夹与manage.py在同一目录中。

而且,我已经安装了WitheNoise,但它也不能解决问题。

另外:我正在使用docker,我已经完成了collect static并检查了容器。所有文件都正确存在。

setting.py

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

html文件

{% load staticfiles %}
<!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" %}">

  <title>SOS Media</title>
</head>

让我知道是否需要在帖子中添加其他内容,以帮助您。谢谢,

python django static
2个回答
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-中列出
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    'any_other_locations',
]


0
投票

使用Whitenoise,您可以在setting.py中使用以下选项:

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/

© www.soinside.com 2019 - 2024. All rights reserved.