Как мне зарегистрировать тег в Django - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь добавить несколько стилей CSS в базовый HTML-файл в версии Django 2.2.0.Однако я получаю следующий TemplateSyntaxError:

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

Файл css с именем base.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

А вот как я включил CSS в файл base.html.

<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 Ответ

2 голосов
/ 05 мая 2019

Я попытался изменить {% static 'css/base.css' %} на {% load static 'css/base.css' %}

Вы должны использовать два оператора:

  1. сначала вы загрузите библиотеку static
  2. далее вы можете использовать тег статического шаблона.

Как например:

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

{% load static %} толькоиспользуется для загрузки тегов шаблонов, определенных в приложении static.

Обратите внимание, что, как и в документации к статическим файлам [Django-doc] , вам потребуется изменитьurls.py файл также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...