{% if %}
部分では、文字列形式の数値と別の数値を比較したいと思います。私はslice
フィルタを試しましたが、うまくいきません。 テンプレートに渡されるすべての数字がdjangoの文字列として解釈され、文字列をテンプレートの数値に変換する方法がないため、文字列を比較する必要があります。Django - データ型に応じたテンプレートのif条件の比較
私はパーティション情報を取得し、<table>
のテンプレートに送信しています。パーティションの使用率が90%を超える場合、パーセンテージは赤で表示されます。
マシンに複数のパーティションが存在するため、条件付きスタイルの行は独立しているため、表示時ではなく、表示時に決定する方が適しています。
パーセントは整数(89
)で、小数点ではありません(0.7
)。小数点の場合は{% if '0.9' in value %}
を使用できますが、そうではありません。
私はこのように私のテンプレートがあります(part.4
からpart.0
は、パーティションに関する他のデータです)
<tbody>
{% for part in partitions %}
<tr>
<td>{{part.0}}</td> <td>{{part.1}}</td> <td>{{part.2}} GB </td> <td>{{part.3}} GB </td> <td>{{part.4}} GB </td>
{% if part.5|slice:"0:1" == "8" or part.5|slice:"0:1" == "9" %}
<td><font color="red">{{part.5}}%</font></td>
{% else %}
<td>{{part.5}}%</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
----------------------をEDIT 1 ----------------------------
part
はsdiskpart.device
、sdiskpart,mountpoint
を付加、psutil.disk_partitions('some_partition')
とpsutil.disk_usage("some_mountpoint")
から得られたデータとのリストであります、sdickusage.total
,sdiskusage.free
,sdiskusage.free
,sdiskusage.percent
。それは次のようである:
['/dev/sda1', '/boot', 'xxxxxxxxx', 'xxxxxxxxx', 'xxxxxxx', '20.9']
---------------------- EDIT 1 --------------- -------------
これでデータは条件に一致しても不平は表示されませんが、赤色にはなりません。
私の目標を達成するためには何ができますか?
PS:ドキュメントで
、私はこのfraseを参照してください:あなたはまた、if式でフィルタを使用することができます
フィルタ。たとえば、次のように
{% if messages|length >= 100 %} You have lots of messages today! {% endif %}
しかし、それは受け入れられ、他のフィルタを言及していません。だから、slice
などのフィルタは許可されていますか?そうではないようです。
私はテンプレートでフィルタを使用することに関して他の投稿を見ましたが、if
で使用することは言及されていませんが、{{ str.slice }}
のようになります。
スライスは、Pythonと同じに動作します。 '0:1'のスライスはリストを与え、それは決して整数に等しいことはありません。 –
しかし、それはリストを与える?私は疑問に思います.... >>> '18 .9' [0:1] '1' '。 – FaithReaper
私は、文字列をスライスしたいと思っています。 – FaithReaper