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.