私はすでにJinja2のが統合されているようので、私はそれらを拡張するために、私のJinja2のbase.html
ファイルを使用することはできません、私は内蔵のログイン/ログアウトのためのビューのデフォルトは、Djangoのテンプレートを期待する見ることができるようにジャンゴが提供する認証および承認システムを使用してしようとしていますエンジン。Django認証をJinja2テンプレートと正しく統合する方法は?
私は「base.html」を複製し、Djangoのテンプレートに構文を変更することで、この問題を解決することができましたが、このアプローチは異なるテンプレート言語で2つの同じファイルに依存しているために私を強制します。
しかし、私は別の問題があります.Geneja2テンプレートcontext
のuser
オブジェクトにアクセスすることはできません。でも、これはDjangoテンプレートで行うことができます。
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
マイJinja2のテンプレート: '私はアクセスできません' と言って
{% 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 %}
私の質問があるが、どのように私はこの問題を回避行くことができますか?私はちょうどDjangoのテンプレートを元に戻すべきですか?これはますます乱雑になるからです。
魔法のように動作し、おかげで再び@Alasdair!もう1つの質問がありました。組み込みのdjango-registrationはlogin.html/logged_out.htmlなどのテンプレートを使用しています。これを私のjinja base.htmlで拡張することは可能でしょうか、別のdjangoテンプレートベース.html? –
DjangoテンプレートをJinjaテンプレートで拡張することはできません。私はJinjaとDjangoのための基本テンプレートを持たないようにしようと思います、それは不要な複製のように思えます。 Jinjaテンプレートを使って 'registration /'テンプレートをオーバーライドしようとすると、Djangoのテンプレートを使うDjangoの管理者によっても使用されるので、問題が生じるかもしれません。おそらく、 'django-registration'とJinja2テンプレートを指すようにビルドされた認証ビューをカスタマイズすることができます。 – Alasdair