0

私が達成したいのは、Django テンプレートで計算を行うことです。単純な数学では次のようになります。

section_angle = base_angle + ( sections_length / current_iteration_counter_over_sections)

Django テンプレートで翻訳しようとすると、次のようになると思います。

{% for section in sections %}
    {% with base_angle|add:sections|length|divides:forloop.counter0 as section_angle %}

次のようなカスタム分割フィルターを使用

def divides(value, param):
    return float(param)/float(value)

それをどのように配置するか、使用する必要があるフィルターと引数の順序について少し混乱しています。ここに示す例では、次のエラーが発生します:レンダリング中に ValueError がキャッチされました: 文字列を float に変換できませんでした:

おまけの質問: 明確にするために括弧を追加しようとしましたが、テンプレート エンジンが気に入らないようです。

4

1 に答える 1

0

そうしないでください。Django テンプレート システムは、そのようなロジックを配置する場所ではありません。Django の公式 Web サイトで、テンプレートに関する哲学のコメントを読んでください。

プログラミングのバックグラウンドがある場合、またはプログラミング コードを直接 HTML に混在させる言語に慣れている場合は、Django テンプレート システムが単純に HTML に埋め込まれた Python ではないことに注意してください。これは仕様によるものです。テンプレート システムは、プログラム ロジックではなく、プレゼンテーションを表現するためのものです。

Timmy のコメントは正しいと思います。ロジック全体をカスタム フィルターに入れます。

于 2013-06-22T17:51:43.033 に答える