/ / Załaduj bibliotekę znaczników szablonów Django dla wszystkich widoków domyślnie - django, django-templates

Załaduj bibliotekę znaczników szablonów Django dla wszystkich widoków domyślnie - django, django-templates

Mam niewielką bibliotekę templatetag związaną z typografią, której używam na prawie każdej stronie. Teraz muszę załadować go dla każdego szablonu za pomocą

{% load nbsp %}

Czy istnieje sposób na załadowanie go "globalnie" dla wszystkich widoków i szablonów jednocześnie? Umieszczenie znacznika obciążenia w szablonie podstawowym nie działa.

Odpowiedzi:

69 dla odpowiedzi № 1

Tam jest add_to_builtins metoda w django.template.loader. Po prostu podaj nazwę swojego modułu templatetags (jako ciąg znaków).

from django.template.loader import add_to_builtins

add_to_builtins("myapp.templatetags.mytagslib")

Teraz mytagslib jest dostępny automatycznie w dowolnym szablonie.


29 dla odpowiedzi nr 2

Zmieni się wraz z wydaniem Django 1.9.

Od wersji 1.9 poprawne podejście będzie polegało na konfigurowaniu tagów i filtrów szablonów builtins klucz OPTIONS - patrz przykład poniżej:

TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [],
"APP_DIRS": True,
"OPTIONS": {
"builtins": ["myapp.builtins"],
},
},
]

Detale: https://docs.djangoproject.com/en/dev/releases/1.9/#django-template-base-add-to-builtins-is-removed


27 dla odpowiedzi nr 3

W django 1.7 po prostu zamień from django.template.base import add_to_builtins


5 dla odpowiedzi № 4

W Django 1.9 jest libraries słownik etykiet i przerywanych ścieżek w języku Python modułów znaczników szablonów w celu zarejestrowania w silniku szablonów. Może to służyć do dodawania nowych bibliotek lub dostarczania alternatywnych etykiet dla istniejących.

TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
"libraries": { # Adding this section should work around the issue.
"custom_tags" : "myapp.templatetags.custom_tags",#to add new tags module.
"i18n" : "myapp.templatetags.custom_i18n", #to replace exsiting tags modile
},
},
},
]