姜戈。静态未加载
Django. Statics not loading
你好,我正在使用 Django 1.8.7,我的静态文件有问题,显然它们没有加载,css 的请求似乎是正确的。
这是我的 settings.py
文件:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR + '/templates/'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
STATIC_URL = '/static/'
STATICFILES_DIRS = (BASE_DIR + 'static', PROJECT_PATH + 'static')
这是我的项目结构:
tree -I *pyc
.
├── db.sqlite3
├── django_vuldrone
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── mainapp
│ ├── admin.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── static
│ │ └── css
│ │ └── tem.css
│ ├── templates
│ │ └── mainapp
│ │ └── tem.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── static
│ └── css
│ └── nano.css
└── templates
└── base.html
我在 mainapp
目录外有一个 base.html
,它在我的 tem.html
中完美加载,问题是 tem.css
和 nano.css
未加载的文件。
这是我的 base.html
的样子:
{% load staticfiles %}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<link rel="stylesheet" href="{% static '/css/nano.css' %}" >
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<h1>My helpful timestamp site</h1>
{% block content %}{% endblock %}
<h1>Thanks for visiting my site.</h1>
</body>
</html>
这是我的 tem.html
文件:
{% extends "base.html" %}
{% load staticfiles %}
<link rel="stylesheet" href="{% static '/css/tem.css' %}" >
{% block title %}The current time{% endblock %}
{% block content %}
{% for vulnerability in vulnerabilities %}
<p>{{ vulnerability.cve }}</p>
{% endfor %}
{% for product in products %}
<h1>{{ product.vendor }}</h1>
{% endfor %}
{% endblock %}
提前谢谢你。
我认为路径名上的前导斜线是问题所在。
改为这样做:
{% static 'css/tem.css' %}
使用 django 静态文件查找器时需要考虑的一些事项:
- 它会在您安装的每个应用程序上寻找一个 static/ 文件夹。因此,您创建一个 app_name/static/app_name 以便在模板中执行 {% static app_name/css/xxx.css %}。
- 如果您的根项目文件夹中有一个 static/ 文件夹(因为您想以这种方式在模板中导入这些静态信息 {% static css/bootstrap.css %},即您想要要在此处存储您的全局静态文件等),您必须使用 STATICFILES_DIRS 设置变量手动添加此文件夹。
你的问题是你的静态目录在它们之间造成了冲突,当你做 {% static css/whatever.css %}
所以将你的 mainapp/static/css/tem.css 移动到 mainapp/static/mainapp/css/tem.css 并将你的静态导入更改为 {% static mainapp/css/tem.css %}。如果你想从你的全局静态文件文件夹中导入,请执行 {% static /css/nano.css %}
你好,我正在使用 Django 1.8.7,我的静态文件有问题,显然它们没有加载,css 的请求似乎是正确的。
这是我的 settings.py
文件:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR + '/templates/'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
STATIC_URL = '/static/'
STATICFILES_DIRS = (BASE_DIR + 'static', PROJECT_PATH + 'static')
这是我的项目结构:
tree -I *pyc
.
├── db.sqlite3
├── django_vuldrone
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── mainapp
│ ├── admin.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── static
│ │ └── css
│ │ └── tem.css
│ ├── templates
│ │ └── mainapp
│ │ └── tem.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── static
│ └── css
│ └── nano.css
└── templates
└── base.html
我在 mainapp
目录外有一个 base.html
,它在我的 tem.html
中完美加载,问题是 tem.css
和 nano.css
未加载的文件。
这是我的 base.html
的样子:
{% load staticfiles %}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<link rel="stylesheet" href="{% static '/css/nano.css' %}" >
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<h1>My helpful timestamp site</h1>
{% block content %}{% endblock %}
<h1>Thanks for visiting my site.</h1>
</body>
</html>
这是我的 tem.html
文件:
{% extends "base.html" %}
{% load staticfiles %}
<link rel="stylesheet" href="{% static '/css/tem.css' %}" >
{% block title %}The current time{% endblock %}
{% block content %}
{% for vulnerability in vulnerabilities %}
<p>{{ vulnerability.cve }}</p>
{% endfor %}
{% for product in products %}
<h1>{{ product.vendor }}</h1>
{% endfor %}
{% endblock %}
提前谢谢你。
我认为路径名上的前导斜线是问题所在。
改为这样做:
{% static 'css/tem.css' %}
使用 django 静态文件查找器时需要考虑的一些事项:
- 它会在您安装的每个应用程序上寻找一个 static/ 文件夹。因此,您创建一个 app_name/static/app_name 以便在模板中执行 {% static app_name/css/xxx.css %}。
- 如果您的根项目文件夹中有一个 static/ 文件夹(因为您想以这种方式在模板中导入这些静态信息 {% static css/bootstrap.css %},即您想要要在此处存储您的全局静态文件等),您必须使用 STATICFILES_DIRS 设置变量手动添加此文件夹。
你的问题是你的静态目录在它们之间造成了冲突,当你做 {% static css/whatever.css %}
所以将你的 mainapp/static/css/tem.css 移动到 mainapp/static/mainapp/css/tem.css 并将你的静态导入更改为 {% static mainapp/css/tem.css %}。如果你想从你的全局静态文件文件夹中导入,请执行 {% static /css/nano.css %}