在 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的主要内容,如果未能解决你的问题,请参考以下文章