いくつかのレコードを返す関数をDjangoのテンプレートに渡します。この関数を呼び出して、その結果を繰り返したいと思います。
{% for item in my_func(10) %}
それは機能しません。関数の戻り値を変数に設定し、変数を反復処理しようとしましたが、Djangoテンプレートで変数を設定する方法はないようです。
それを行う通常の方法はありますか?
テンプレートで引数を必要とする関数を呼び出すことはできません。 書き込み 代わりにテンプレートタグまたはフィルター。
オブジェクトがある場合は、@property
として定義できるため、呼び出しなしで結果を取得できます。
class Item:
@property
def results(self):
return something
次にテンプレートで:
<% for result in item.results %>
...
<% endfor %>
Djangoのテンプレートに関数を渡します。この関数はレコードを返します
関数の代わりに、関数の戻り値を格納する変数をDjangoテンプレートに渡してみませんか?
Fuctionの戻り値を変数に設定して変数を反復処理しようとしましたが、Djangoテンプレートで変数を設定する方法はないようです。
テンプレートの代わりにDjangoビューで変数を設定し、テンプレートに渡します。
設計上、Django=テンプレートは任意のPythonコードを呼び出すことはできません。これは、デザイナーがテンプレートを記述する環境のセキュリティおよび安全機能であり、ビジネスロジックも防止しますテンプレートへの移行。
これを行うには、Jinja2テンプレート( http://jinja.pocoo.org/docs/ )、またはこれをサポートする他のテンプレートシステムを使用するように切り替えることができます。 Djangoの他の部分は、意図的に一方向のプロセスであるため、使用するテンプレートの影響を受けません。必要に応じて、同じプロジェクトで多くの異なるテンプレートシステムを使用できます。
できることは、別のテンプレートファイルとして「関数」を作成し、そのファイルにパラメータを渡すファイルを含めることです。
Index.html内
<h3> Latest Songs </h3>
{% include "song_player_list.html" with songs=latest_songs %}
Song_player_list.html内
<ul>
{% for song in songs %}
<li>
<div id='songtile'>
<a href='/songs/download/{{song.id}}/'><i class='fa fa-cloud-download'></i> Download</a>
</div>
</li>
{% endfor %}
</ul>