Chcę używać silnika szablonów Django w moim kodzie (Python), ale nie buduję witryny internetowej opartej na Django. Jak go używać bez posiadania pliku settings.py (i innych) i konieczności ustawiania zmiennej środowiskowej DJANGO_SETTINGS_MODULE?
Jeśli uruchomię następujący kod:
>>> import django.template
>>> from django.template import Template, Context
>>> t = Template('My name is {{ my_name }}.')
Dostaję:
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
python
django
templates
django-templates
template-engine
Daryl Spitzer
źródło
źródło
settings.configure()
już nie potrzebujesz .Składnia Jinja2 jest prawie taka sama jak w Django, z bardzo niewielkimi różnicami, a ponadto otrzymujesz znacznie bardziej wydajny silnik szablonów, który również kompiluje Twój szablon do kodu bajtowego (SZYBKO!).
Używam go do tworzenia szablonów, w tym w samym Django, i jest bardzo dobry. Możesz także łatwo pisać rozszerzenia, jeśli brakuje jakiejś funkcji.
Oto kilka demonstracji generowania kodu:
źródło
Czy jest jakiś szczególny powód, dla którego chcesz używać szablonów Django? Zarówno Jinja i Genshi są, moim zdaniem, lepszy.
Jeśli naprawdę chcesz, zobacz dokumentację Django na
settings.py
. Zwłaszcza sekcja „Korzystanie z ustawień bez ustawieńDJANGO_SETTINGS_MODULE
”. Użyj czegoś takiego:źródło
Poleciłbym również jinja2. Jest fajny artykuł na temat
django
vs.,jinja2
który zawiera szczegółowe informacje na temat tego, dlaczego powinieneś preferować później.źródło
{% set %}
składnię i równość względem silnika szablonów Twig (PHP). Lepiej jest zawsze pisać kod międzyplatformowy, ale różnica w wydajności nie jest krytyczna - na przykład Python zawsze będzie działał wolniej niż PHP, więc jeśli potrzebujesz wydajności, lepiej stwórz witrynę z PHP, Twig i Symfony2 lub innym. Smutne, ale prawda.Zgodnie z dokumentacją Jinja, obsługa Pythona 3 jest nadal eksperymentalna . Więc jeśli korzystasz z Pythona 3 i wydajność nie jest problemem, możesz użyć wbudowanego silnika szablonów django.
Django 1.8 wprowadziło obsługę wielu silników szablonów, co wymaga zmiany sposobu inicjalizacji szablonów. Musisz jawnie skonfigurować,
settings.DEBUG
który jest używany przez domyślny silnik szablonów dostarczony przez django. Oto kod do używania szablonów bez używania reszty django.źródło
Oprócz tego, co napisali inni, jeśli chcesz użyć szablonu Django na Django> 1.7, musisz podać swoje ustawienia.configure (...) wywołać zmienną TEMPLATES i wywołać django.setup () w następujący sposób:
Następnie możesz załadować swój szablon jak zwykle, z łańcucha:
A jeśli zapisałeś zmienną DIRS w pliku .configure, z dysku:
Błąd Django: Nie skonfigurowano żadnego zaplecza DjangoTemplates
http://django.readthedocs.io/en/latest/releases/1.7.html#standalone-scripts
źródło
Powiedziałbym również, że Jinja . Jest zdecydowanie potężniejszy niż Django Templating Engine i jest samodzielny .
Gdyby była to zewnętrzna wtyczka do istniejącej aplikacji Django, można by stworzyć niestandardowe polecenie i użyć silnika szablonów w środowisku projektów. Lubię to;
Ale nie sądzę, że warto po prostu używać Django Templating Engine zamiast Jinja.
źródło
Dzięki za pomoc. Oto jeszcze jeden dodatek. Sytuacja, w której musisz użyć niestandardowych tagów szablonu.
Powiedzmy, że masz ten ważny tag szablonu w module read.py
To jest plik szablonu html „temp.html”:
Na koniec mamy skrypt Pythona, który będzie powiązany ze wszystkimi
Wynik byłby
źródło
django.template.base.add_to_builtins("read")
podnosiValueError
dla mnie.TemplateDoesNotExist
błąd Używam django 1.10.1Znajdź to:
http://snippets.dzone.com/posts/show/3339
źródło
Nie. Zamiast tego użyj StringTemplate - nie ma powodu, aby rozważać inny silnik szablonów, gdy się o nim dowiesz.
źródło
Powtarzam powyższe stwierdzenia. Jinja 2 to całkiem niezły zestaw szablonów Django do ogólnego użytku. Myślę, że pracują nad tym, aby szablony Django były trochę mniej powiązane z settings.py, ale Jinja powinna dobrze Ci się przydać.
źródło
Podczas uruchamiania
manage.py
powłoki:źródło
Google
AppEngine
używa silnika szablonów Django, czy przyjrzałeś się, jak to robi? Możesz tego po prostu użyć.źródło