【问题标题】:why are my static files not getting detected in django?为什么在 django 中没有检测到我的静态文件?
【发布时间】:2021-04-19 08:31:19
【问题描述】:

我想在我的 django 项目应用中添加一个静态文件。

我的应用名为“核心”

因此,在我需要静态文件(称为 main.css)的应用程序中,我创建了一个名为 static/core/main.css 的目录

所以之后我的目录看起来像这样

core
....
-static
|_core
  |_main.css
.........

在 settings.py 文件中,我写了这个

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

在我想要静态 css 的 html 文件中,我写了这个

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{% block title %} Welcome | Ecommerce {% endblock %}</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
    <link rel="stylesheet" href="{% static 'core/main.css' %}">

此 HTML 文件位于全局项目级模板文件夹中,我将项目中所有应用程序的模板转储到该文件夹​​中。

但是我的静态文件由于某种原因没有被加载

【问题讨论】:

标签: django


【解决方案1】:

可能是因为您没有指定文件?

我想你应该改变它

<link rel="stylesheet" href="{% static '' %}">

<link rel="stylesheet" href="{% static 'core/main.css' %}">

尝试添加

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

进入你的 Django 设置

【讨论】:

  • 对不起。我在原始代码中提到了文件名,但我没有正确复制粘贴它。
  • Django 是否显示任何错误?您确定在您的项目中正确找到了 BASE_DIR 吗?静态文件是否加载到其他页面上?您是否尝试重新启动服务器?
  • 可以尝试手动去地址/static/core/main.css吗?服务器是否响应 404 错误?
  • 可能您需要将静态目录添加到 Nguyễn Vũ Thiên 提到的 STATICFILES_DIRS 设置中。查看更多docs.djangoproject.com/en/3.2/ref/settings/#staticfiles-dirs
【解决方案2】:

在你的 settings.py 文件中添加这个

STATIC_URL = '/static/'
if DEBUG:
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]
else:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')

然后在你的根目录中打开终端并运行以下命令

python manage.py collectstatic

您也可以参考 django 文档,他们在其中解释了 django 中的静态文件 https://docs.djangoproject.com/en/3.2/ref/contrib/staticfiles/

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 2019-12-30
    • 2020-09-11
    • 2021-07-22
    • 2021-05-26
    • 1970-01-01
    • 2021-02-06
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多