为啥 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 中更新我的 HTML 之前必须重新加载两次?