在 Django 中将 CSS(和一般的静态文件)链接到 html

Posted

技术标签:

【中文标题】在 Django 中将 CSS(和一般的静态文件)链接到 html【英文标题】:Linking up CSS (and static files in general) to html in Django 【发布时间】:2018-07-26 21:47:24 【问题描述】:

我的 html 文件未读取我的 css 文件 - 我已尝试搜索有关此问题的所有相关问题,但仍无法读取 css 文件。这是我所拥有的:

settings.py

import os
import os.path

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
...
STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, "form/static")
)

index.html 的开头

% load staticfiles %
<!DOCTYPE html>
<html leng="en">
    <head>
        <title>Test</title>

        <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">
        <link rel="stylesheet" href="% static 'css/main.css' %" />
        </head>

我的“static”和“templates”文件夹在同一层,main.css在static/css/main.css

编辑: 如果它有帮助,我的引导链接正在被识别,只有 main.css 不是。

更新: 从 settings.py 中删除 STATICFILES_DIRS 并添加 STATIC_ROOT = os.path.join(BASE_DIR, "form/static") 如上所述。

我的文件结构:

app
  app
  - settings.py
  form
  - static
    - css
      - main.css
  - templates
    - form
      - index.html

【问题讨论】:

显示你的项目结构 您可以尝试将% load static % 放在模板顶部,如果有任何改变,请告诉我们? 我做了 - 在 index.html 的顶部。我尝试了 % load static % 和 % load staticfiles % 【参考方案1】:

尝试运行python manage.py collectstatic。这会从您的 STATICFILES_DIRS 收集静态文件,并将它们放入 STATIC_ROOT,staticfiles 应用程序将在其中查找它们以提供服务。

如果您的 Django 应用程序在另一台服务器(如 nginx、apache、uwsgi 或 gunicorn)后面运行,您的服务器配置也可以改变文件的服务方式。查看 Django 的 managing static files 文档了解更多信息。

【讨论】:

我运行了它,它给了我一个错误 File "manage.py", line 14 ) from exc ^ SyntaxError: invalid syntax 另外,在上面的 settings.py 中,我没有 STATIC_ROOT 变量 - 我应该有一个吗? 我还在这里读到***.com/questions/8687927/…,“STATICFILES_DIRS 应该作为静态文件的附加目录。如果你把所有的 css/js/images 放到 APP_NAME/static/APP_NAME 文件夹中,那么就没有需要指定STATICFILES_DIRS" 是的,你应该有一个`STATIC_ROOT。另外,我不确定为什么在运行 manage.py 时会出现 SyntaxError,因为该文件是由 Django 自动生成的。除非你以某种方式改变了它。 是的,没错,你不需要`STATICFILES_DIRS` 我已经成功运行了collectstatic,没有任何区别。我不得不删除 STATICFILES_DIRS 因为它与 STATIC_ROOT 完全相同,并且终端给出了这个错误:ERRORS: ?: (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting.

以上是关于在 Django 中将 CSS(和一般的静态文件)链接到 html的主要内容,如果未能解决你的问题,请参考以下文章

60.Django02

60.Django02

Django静态文件配置

Django中如何实现静态文件缓存到云服务中

django中怎么载入css等静态文件

django中怎么载入css等静态文件