Ich versuche Authentifizierungs- und Autorisierungssystem von Django zu verwenden, und wie ich die integrierten Standardansichten für Login/Logout erwarten Django-Vorlagen, daher kann ich meine Jinja2 base.html
Datei nicht erweitern, da ich bereits Jinja2 integriert habe Motor.Wie kann man die Django-Authentifizierung mit Jinja2-Vorlagen richtig integrieren?
Ich konnte dieses Problem lösen, indem ich 'base.html' replizierte und die Syntax in die Django-Vorlage änderte, aber dieser Ansatz zwingt mich, auf zwei gleiche Dateien in verschiedenen Vorlagen zu setzen.
Allerdings habe ich ein anderes Problem, ich kann nicht auf das user
Objekt in Jinja2 Vorlage context
zugreifen, obwohl ich das in Django Vorlage tun kann.
Indem man sagt, 'ich nicht zugreifen kann':
File "/home/dir/workspace/project/venv/local/lib/python2.7/site-packages/jinja2/environment.py", line 430, in getattr return getattr(obj, attribute)
UndefinedError: 'user' is undefined
Meine Jinja2 Vorlage:
{% if user.is_authenticated %}
<li>User: {{ user.get_username }}</li>
<li><a href="{% url 'logout'%}?next={{request.path}}">Logout</a></li>
{% else %}
<li><a href="{% url 'login'%}?next={{request.path}}">Login</a></li>
{% endif %}
Meine Frage ist, wie kann ich dieses Problem gehen? Sollte ich nur Django-Vorlagen zurückschalten, weil das immer unordentlicher wird.
Funktioniert wie ein Charme, nochmals danke @Alasdair! Ich hatte noch eine Frage, die eingebaute Django-Registrierung verwendet die Templates wie login.html/logged_out.html etc., ist es möglich sie mit meiner jinja base.html zu erweitern oder sollte ich eine eigene Django-Template Basis haben .html? –
Sie können eine Django-Vorlage nicht mit einer Jinja-Vorlage erweitern oder umgekehrt. Ich würde versuchen, keine Basisvorlagen für Jinja und Django zu haben, das klingt nach unnötiger Duplizierung. Sie könnten Probleme haben, wenn Sie versuchen, die 'registration /' Templates mit Jinja Templates zu überschreiben, da diese auch vom Django Admin verwendet werden, der Django Templates verwendet. Sie könnten wahrscheinlich 'django-registration' und die eingebauten Authentifizierungsansichten so anpassen, dass sie auf Jinja2-Vorlagen zeigen. – Alasdair