姜戈。静态未加载

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.cssnano.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 %}