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 № 1Tam 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
},
},
},
]