私はウェブサイト テンプレート エンジンとして Jinja2 を使用し、テンプレートで使用されるすべてのヘルパー関数をマクロとして実装しましたが、1 つだけです。これは Python コードです。
def arrow_class_from_deg(angle):
if angle is None:
return ''
arrow_directions = [
(0, 'n'), (45, 'ne'), (90, 'e'), (135, 'se'), (180, 's'),
(225, 'sw'), (270, 'w'), (315, 'nw'), (360, 'n')
]
return min(arrow_directions, key=lambda (ang, _): abs(ang - angle))[1]
指定された角度に最も近い矢印の CSS クラスを返します。この関数はテンプレートでのみ使用されます (今後も使用される予定です)。そのため、テンプレートにも、つまりマクロとして実装することは理にかなっています。ただし、これを実行しようとすると、Jinja2 が Python ラムダをサポートしていないように見えることに気付きました。それは本当ですか、そうであれば、この関数をより適切に記述する方法は?