CSS静态文件未在Django中加载

Posted

技术标签:

【中文标题】CSS静态文件未在Django中加载【英文标题】:CSS static file is not loading in Django 【发布时间】:2020-04-28 11:38:16 【问题描述】:

我正在学习 Django,并尝试实现一个博客应用程序。我在使用项目中的静态文件时遇到错误。我知道,有很多同名的问题。但是我尝试了各种方法,仍然没有在浏览器上呈现css文件。

文件夹结构:

firstBlog 是项目名称。 blog 是 firstBlog 中的应用。 allstaticfiles 是 STATIC_ROOT 位置。 static 是用于存储静态内容的文件夹。 模板用于存储相应应用的模板。

这是我的一些代码:

settings.py

STATIC_URL = '/static_files/'

STATICFILES_DIRS = [
     os.path.join(BASE_DIR, "static"),
     '/Django/projects/project1/project1/firstBlog/static',
]
#print(os.path.exists(os.path.join(BASE_DIR,'static'))) ----------------TRUE

STATIC_ROOT=os.path.join(BASE_DIR, "allstaticfiles")

Base.html

我使用了 % load static % 并且为了加载 css,我将 href 属性设置如下。

<link rel="stylesheet" type="text/css" href="% static 'blog/main.css' % ">

需要考虑的几件事:

    当我在浏览器上查看我的页面时,它在控制台上显示错误,这可能是由于某些路径问题。

127.0.0.1/:1 拒绝应用来自 'http://127.0.0.1:8000/blog/%7B%%20static%20'blog/main.css'%20%%20%7D' 的样式 因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,并启用严格的 MIME 检查。

    当我从 localhost 链接(即http://127.0.0.1:8000/blog/static_files/blog/main.css)查看样式时,它正在工作。

    当我检查页面的视图源然后单击 href 链接时,它没有加载 css 文件。

    文件夹结构: C:\Users\tedd\OneDrive\Django\projects\project1\project1\firstBlog\static

【问题讨论】:

【参考方案1】:

注意这一点:在本地保存Debug = False 可能会导致css 无法加载的错误。更改 Debug = True 以使用 django 在本地运行您的 css。

【讨论】:

【参考方案2】:

我会尽力提供帮助,但我不是专家!

http://127.0.0.1:8000/blog/static_files/blog/main.css 工作的原因是因为您正在直接访问 main.css 文件。我会假设您的 &lt;link rel="stylesheet" type="text/css" href="% static 'blog/main.css' % "&gt; 没有指向正确的目录。

我查看了文档,您的文件夹结构似乎没有以正确的方式形成。以下是所有内容的结构模板:

[projectname]/                  <- project root
├── [projectname]/              <- Django root
│   ├── __init__.py
│   ├── settings/
│   │   ├── common.py
│   │   ├── development.py
│   │   ├── i18n.py
│   │   ├── __init__.py
│   │   └── production.py
│   ├── urls.py
│   └── wsgi.py
├── apps/
│   └── __init__.py
├── configs/
│   ├── apache2_vhost.sample
│   └── README
├── doc/
│   ├── Makefile
│   └── source/
│       └── *snap*
├── manage.py
├── README.rst
├── run/
│   ├── media/
│   │   └── README
│   ├── README
│   └── static/
│       └── README
├── static/
│   └── README
└── templates/
    ├── base.html
    ├── core
    │   └── login.html
    └── README

在您提供的屏幕截图中,您的模板文件夹看起来好像位于 django 根目录而不是项目根目录中。这很重要,因为它会在错误的位置搜索您的 .css。

我鼓励您尝试修复目录,然后不要使用href="% static 'blog/main.css' % "&gt;,而只需使用href="css/style.css"

请注意它是 css/style.css 而不是 style.css。在您的模板文件夹中,您可以创建一个名为 css 的文件夹,然后将所有 .css 文件存储在其中。然后您可以简单地使用 href="css/style.css" 指向 css 文件夹。

这应该作为一个临时解决方案,直到更有知识的人可以给你正确的答案。

编辑: 您的 base.html 也应该在模板文件夹中!所以:project_root/templates(在此处插入 base.html)/css/(在此处插入您的 .css(

【讨论】:

我不会放弃 % static % 模板标签。 DEBUG=False 时必须将其部署到生产环境怎么样?

以上是关于CSS静态文件未在Django中加载的主要内容,如果未能解决你的问题,请参考以下文章

DJANGO:静态文件未在实时服务器中加载(但在本地加载)?

自定义静态文件未在 django 项目中加载

Favicon 未在 Django 中加载

在 Django 中的 css 文件中加载静态文件

在 CPanel 中使用 Python 在 Django 管理面板中加载静态文件

CSS未在Spring Boot中加载