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' %}">
Alasdair
quelle

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 %}
Alasdair
quelle
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')
Ngandhi
quelle
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

MoShamroukh
quelle
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