web-dev-qa-db-ja.com

Django部分的にレンダリングする方法

RoRの部分レンダリングのように、テンプレートレベルからビューメソッドを呼び出すにはどうすればよいですか?問題はこの blog に完全に示されています。 includeを使用してテンプレートをテンプレートに含めることができますが、テンプレートのレイヤー全体ですべての変数名を一致させる必要があります。テンプレートにビューを含め、レイヤーを分離したいのですが。ブログは1年前に書かれました。それ以来、より良い解決策はありますか?

ありがとう

40
xster

テンプレートタグは間違いなくDjangoでこれを行う方法です。テンプレートに特定のものを渡してコンテンツをレンダリングさせる必要がある場合は、渡された変数を受け入れる組み込みの組み込みタグを使用できます。

包含タグ を使用して、レンダリングするテンプレートへのパスを指定する必要があります。 Djangoは自動的に検索されません/your_app/views/_my_partial.html.erb Railsと同様。

ドキュメントをチェックして、それがあなたの必要なことを行うかどうかを確認してください。そうでない場合は、いつでも独自に作成できます。

12
Brandon

あなたが探していると思います{% include '_partial.html' %}

58
Alireza Savand

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#include

パーシャルを含めるときに「with」引数を使用する場合、変数を一致させる必要はありません-テンプレートを含める前に変数の名前を変更できます。この手法により、はるかに再利用可能なテンプレートを作成できることがわかりました。また、包含タグを作成するよりもはるかに少ない作業です。例えば:

{% include 'partials/blog_entry.html' with blog_entry=my_blog_entry %}
28
Michael Bylstra

このスニペット を採用し、- pypiパッケージ として利用できるようにしました。

  1. pip install Django_render_partial

  2. 'Django_render_partial'INSTALLED_APPSに追加

  3. 'Django.template.context_processors.request'TEMPLATES['OPTIONS']['context_processors']にあることを確認してください

  4. テンプレートで{% render_partial %}タグを使用します。

{% load render_partial %}

{# using view name from urls.py #}    
{% render_partial 'partial_view' arg1=40 arg2=some_var %}

{# using fully qualified view name #}
{% render_partial 'partial_test.views.partial_view' arg1=40 arg2=some_var %}

{# class based view #}
{% render_partial 'partial_test.views.PartialView' arg1=40 arg2=some_var %}

これらの例を含む test project はGitHubで入手できます。

4
utapyngo