为啥 Django 不加载我的 CSS?

Posted

技术标签:

【中文标题】为啥 Django 不加载我的 CSS?【英文标题】:Why is Django not loading my CSS?为什么 Django 不加载我的 CSS? 【发布时间】:2017-12-09 19:20:49 【问题描述】:

我正在使用 Django 创建一个网站,但由于某种原因,我的 CSS 文件对页面没有任何影响。我已检查以确保我的 STATIC_URL 已定义,但仍然没有运气。

我的设置.py:

# Static files (CSS, javascript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

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

在我的博客应用程序中,我有一个静态目录

blog
  |
  static
     |
     css
       |
       blog.css

我的 html 文档:

% load staticfiles %
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Medicare Supplemental info</title>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <!-- This is where I'm loading the CSS file -->
        <link rel="stylesheet" href="% static 'css/blog.css' %">
    </head>

我检查以确保我在 settings.py 中安装了所需的应用程序:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

我也尝试过改变加载静态文件的方式:

% load staticfiles %

到:

% load static %

仍然没有运气。我做错了什么?

【问题讨论】:

【参考方案1】:

我认为你在 urls.py 中错过了这个:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

这项工作在开发中,在生产中您必须使用 manage.py 收集静态数据并使用 nginx(或 apache)提供静态数据。

【讨论】:

是的,这解决了我的问题。这是新事物吗?我不相信我必须在我创建的最后一个 Django 站点中这样做。 这不是新的,如果你看到的是 1.7 版本。它就在那里。 docs.djangoproject.com/en/1.7/howto/static-files/…【参考方案2】:

对于 django==2.0.2 不需要对 urls.py 进行任何更改,只需在 settings.py 中获取 STATIC_URL 即可

【讨论】:

【参考方案3】:

遇到同样的问题,搜索无果后,在CMD窗口随便按了Enter,python runserver继续,发现/static/css/blog.css成功找到了。

【讨论】:

【参考方案4】:

我遇到了一些问题,对我有用的解决方案是使用 CRTL-BREAK 停止服务器并重新启动。我正在使用 Django v.3.0.7。

【讨论】:

【参考方案5】:

如果您没有像您的情况那样从其他 html 文件扩展,那么 html 文件中的第一个条目应该是 !DOCTYPE html,然后是加载模板标签,即 %load staticfiles%。

【讨论】:

【参考方案6】:

对于在 django 删除设置文件中的 os 导入之后的任何人。

使用STATIC_ROOT = BASE_DIR / 'static'代替os.path.....

【讨论】:

以上是关于为啥 Django 不加载我的 CSS?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Django 管理站点没有样式/CSS 加载?

Django 为啥我的静态 JS 文件没有加载

为啥在 Django 中更新我的 HTML 之前必须重新加载两次?

Django从模板加载css

为啥引导程序不起作用,尽管我已经加载了它等(Django 项目)?

css 未在 django 生产中加载