Django TemplateSyntaxError - 'staticfiles' ist keine registrierte Tag-Bibliothek


78

Nach dem Upgrade auf Django 3.0 erhalte ich Folgendes TemplateSyntaxError:

In template /Users/alasdair//myproject/myapp/templates/index.html, error at line 1
'staticfiles' is not a registered tag library. Must be one of: admin_list admin_modify admin_urls cache i18n l10n log static tz

Hier ist meine Vorlage

{% load staticfiles %}
<img src="{% static 'my_image.html' %}">

Antworten:


167

{% load staticfiles %}und {% load admin_static %}wurden in Django 2.1 veraltet und in Django 3.0 entfernt .

Wenn Ihre Vorlage Folgendes enthält:

{% load staticfiles %}
{% load static from staticfiles %}
{% load admin_static %}

Sie sollten das Tag einfach ersetzen durch:

{% load static %}

5
  • Versuchen Sie {% load static %}statt{% load staticfiles %}
  • Wenn sich die Wirkung von CSS oder anderen Dateien nicht in Ihrer Vorlage widerspiegelt, schreiben Sie auch die folgenden Zeilen am Ende Ihrer settings.pyDatei
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
VENV_PATH = os.path.dirname(BASE_DIR)
STATIC_ROOT = os.path.join(VENV_PATH, 'static_root')

1
Durch Hinzufügen von STATICFILES_DIRS = [os.path.join (BASE_DIR, 'static')] wurde das Problem behoben. Bevor ich DIRS in Vorlagen, die nicht funktionierten, ein statisches Dateiverzeichnis hinzufügte. Danke vielmals!
— k0rnik

Dies sollte als die richtige Antwort markiert werden. Die anderen Optionen sind jetzt veraltet.
— Alex8752

1

das mit mir gearbeitet ersetzen {% load static from staticfiles %}mit{% load static %}

wo :

Gehen Sie zu Ihrer virtuellen Umgebung "venv" /lip/python3.X/site-packages/leaflet/templates/leaflet/admin/widget.html und allen. HTML- Dateien im Verzeichnis


1
Das Ändern von Dateien site-packagesist eine schlechte Idee. In Ihrem Fall ist es besser, die Django-Broschüre auf eine neuere Version zu aktualisieren , die Django 3.0+ unterstützt
— Alasdair
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.