2017-10-25 10 views
0

{% if %} 부분에서 문자열 형식의 숫자를 다른 형식과 비교하고 싶습니다. slice 필터를 사용해 보았지만 작동하지 않습니다. 템플릿에 전달 된 모든 숫자는 장고의 문자열로 해석되며 템플릿에서 문자열을 숫자로 변환 할 방법이 없다고 생각하기 때문에 문자열을 비교해야합니다.Django - 데이터 유형에 따른 템플릿의 if 조건 비교

파티션 정보를 받고 템플릿 (<table>)으로 보냅니다. 파티션의 사용률이 90 % 이상이면 백분율이 빨간색이어야합니다.

컴퓨터에 파티션이 두 개 이상 있으므로 행의 조건부 스타일이 독립적이므로보기가 아닌 렌더링 할 때 결정하는 것이 좋습니다.

백분율은 정수 (89)로 표시되며 십진수가 아닙니다 (0.7). 십진수이면 {% if '0.9' in value %}을 사용할 수는 있지만 그렇지 않습니다. ---------------------- (다른 데이터 파티션에 대해입니다 part.0part.4에)

<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 ----------------------------

partsdiskpart.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 messages|length >= 100 %} 
    You have lots of messages today! 
{% endif %} 

는하지만, 그것은 허용하는 다른 필터를 언급하지 않습니다. 따라서 slice과 같은 필터가 허용됩니까? 그렇지 않은 것 같습니다.

템플릿에 필터를 사용하는 것에 대한 다른 게시물을 보았지만 if에 사용하는 것을 언급하지 않았지만 {{ str.slice }}과 같습니다.

+0

슬라이스는 파이썬에서와 동일하게 작동합니다; '0 : 1'의 슬라이스는리스트를 제공하고 정수와 같을 수 없다. –

+0

하지만 목록이 있습니까? 나는 의심하지 않는다. ">>> '18 .9'[0 : 1] '1'. – FaithReaper

+0

내 말은, 나는 끈을 자르고 싶다. – FaithReaper

답변

0

글쎄, 나는 그 해답을 발견했다.

(float) '90.7'을 목록에 전달하면 Django 템플릿에서 90과 비교할 수 있습니다. 놀랄 만한. 그것을 문자열로 전달하기 전에.

['/dev/sda1', '/boot', 'xxxxxxxxx', 'xxxxxxxxx', 'xxxxxxx', 20.9] 
# last element is a float 

그리고 그러한 비교가 템플릿에 약자 : 같은

그래서 목록이 있어야한다 템플릿

{% if part.5 > 90.0 %} 
... 
{% endif %}