Ich habe Django 1.9.7 installiert, und ich habe Pythons 3.4.3 und 2.7.10 auf Ubuntu.Kann Jinja2 mit Django nicht einrichten
Dies sind die Schritte, die ich befolgt haben:
- Hergestellt ein neues Projekt mit
django-admin startproject testproject
cd testproject/testproject
- eine App innerhalb des Projekts mit
django-admin startapp testapp
- Hergestellt ein Verzeichnis für Vorlagen, dass App mit
mkdir testapp/templates
und fügte hinzu, eine sehr einfacheindex.html
Vorlage dort Bearbeitet , um das Vorlagen-Backend in
django.template.backends.jinja2.Jinja2
zu ändern, indem Zeile 57 der Standardeinstellungsdatei bearbeitet undtestproject.testapp
zuINSTALLED_APPS
hinzugefügt wird; dieTEMPLATES
Abschnitt ist daher wie folgt aus:TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', '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', ], }, }, ]
urls.py
Edited, Hinzufügenfrom testproject.testapp import views
und ein URL-Musterurl(r'^$', views.index),
Edited
testapp/views.py
Zugabedef index(request): return render(request, 'index.html')
cd ..
- Ran den Server mit
python3 manage.py runserver
oderpython manage.py runserver
- sehr ähnliche Wirkung - einen Browser nehmen zu
http://localhost:3000
Ich erhalte eine Fehlermeldung. Auf der Kommandozeile bekomme ich diese:
Internal Server Error:/
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/django/template/utils.py", line 86, in __getitem__
return self._engines[alias]
KeyError: 'jinja2'
durch eine andere Ausnahme, verursacht „während der oben genannten Ausnahmebehandlung“, die die Ausnahme übereinstimmt ich im Browser sehen:
Environment:
Request Method: GET
Request URL: http://localhost:3000/
Django Version: 1.9.7
Python Version: 3.4.3
Installed Applications:
['django.contrib.staticfiles', 'testproject.testapp', 'webpack_loader']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/usr/local/lib/python3.4/dist-packages/django/template/utils.py" in __getitem__
86. return self._engines[alias]
During handling of the above exception ('jinja2'), another exception occurred:
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in get_response
174. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in get_response
172. response = response.render()
File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" in render
160. self.content = self.rendered_content
File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" in rendered_content
135. template = self._resolve_template(self.template_name)
File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" in _resolve_template
90. new_template = self.resolve_template(template)
File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" in resolve_template
80. return select_template(template, using=self.using)
File "/usr/local/lib/python3.4/dist-packages/django/template/loader.py" in select_template
55. engines = _engine_list(using)
File "/usr/local/lib/python3.4/dist-packages/django/template/loader.py" in _engine_list
143. return engines.all() if using is None else [engines[using]]
File "/usr/local/lib/python3.4/dist-packages/django/template/utils.py" in all
110. return [self[alias] for alias in self]
File "/usr/local/lib/python3.4/dist-packages/django/template/utils.py" in <listcomp>
110. return [self[alias] for alias in self]
File "/usr/local/lib/python3.4/dist-packages/django/template/utils.py" in __getitem__
101. engine = engine_cls(params)
File "/usr/local/lib/python3.4/dist-packages/django/template/backends/jinja2.py" in __init__
35. self.env = environment_cls(**options)
Exception Type: TypeError at/
Exception Value: __init__() got an unexpected keyword argument 'context_processors'
ich sehr ähnlich erhalten Spuren mit Python 2.
I this question, die eine ähnliche Fehlermeldung hat gefunden (KeyError: 'jinja2'
) scheint aber ein anderes Problem, und this bug report zu sein, die den gleichen Fehler hat wieder deren Lösung jinja2 zu installieren, aber jinja2 ist definitiv installiert. Zumindest kann ich python
oder python3
und dann import jinja2
ausführen. pip
sagt, dass jinja2 aktuell ist.
Ich muss etwas Entscheidendes fehlen - irgendwelche Ideen?
Es klingt, als ob Sie das Standard-Template-Backend von django zu jinja geändert haben - es wäre besser, Jinja als zusätzliches Backend hinzuzufügen (siehe [diese Antwort] (http://stackoverflow.com/questions/30701631/how- to-use-jinja2-als-templating-engine-in-django-1-8) Wenn Sie das Django-Template-Backend ersetzen, funktionieren Apps, die Django-Templates verwenden, nicht mehr, einschließlich des Admin. – Alasdair
Auch , Django sucht nach Jinja Vorlagen in 'testapp/jinja2', nicht nach' testapp/templates' – Alasdair
'mv testproject/testapp/templates testproject/testapp/jinja2' hat nichts geändert (ich denke es kommt nicht einmal so weit versuchen, die angegebene Vorlage zu finden), aber das ist nützlich zu wissen, danke. Ich Rollback dann die Vorlage Backend-Einstellungen auf Lager und fügte dann einen neuen Eintrag für Jinja2 wie Sie vorgeschlagen, aber die Optionen Schlüssel aus der verknüpften Antwort vollständig weggelassen (da ich noch nicht weiß, was Environment macht) und DIRS leer gelassen (da APP_DIRS tun wird, was ich will), und es funktioniert jetzt. Wenn du dies als Antwort schreibst, akzeptiere ich es. Vielen Dank! – tremby