如何在Django中注册标签

时间:2019-05-05 11:23:38

标签: django

我正在尝试在Django版本2.2.0中将一些CSS样式添加到基本html文件中。但是,我收到以下TemplateSyntaxError:

Invalid block tag on line 4: 'static'. Did you forget to register or load this tag?

名为base.css的css文件存在于名为static的目录中。这是树命令的打印屏幕。

.
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── blog_project
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── manage.py
├── Pipfile
├── static
│   └── css
│       └── base.css
└── templates
    ├── base.html
    └── home.html

这是我如何在base.html文件中包括CSS的方法。

<html>
    <head>
        <title>Django Blog</title>
        <link href="{% static 'css/base.css' %}" rel="stylesheet">
    </head>
    <body>
        <header>
            <h1><a href="{% url 'home' %}">Django blog</a></h1>
        </header>
        <div>
            {% block content %}
            {% endblock content %}
        </div>
    </body>
</html>

这是我在settings.py文件中的静态文件目录的位置:

STATIC_URL = '/static/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

settings.py中的已安装应用列表如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog.apps.BlogConfig',
]

我尝试将{% static 'css/base.css' %}更改为{% load static 'css/base.css' %},但这会产生另一个错误:

''css/base.css'' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
static
staticfiles
tz

1 个答案:

答案 0 :(得分:2)

  

我尝试将{% static 'css/base.css' %}更改为{% load static 'css/base.css' %}

您应该使用两个语句:

  1. 首先,您加载static库;和
  2. 接下来,您可以使用静态模板标记。

例如:

{% load static %}
<!-- ... -->
<head>
    <title>Django Blog</title>
    <link href="{% static 'css/base.css' %}" rel="stylesheet">
</head>

{% load static %}仅用于加载static应用程序中定义的模板标签。

请注意,就像documentation on static files [Django-doc]所说的那样,您还需要修改urls.py文件。