我正在使用Django 1.8.3和Python 3.4.3
我知道这已经被多次回答了,但是没有一个答案是针对我的情况而且我还在学习Python,所以我很难将解决方案拼凑成一个常见的错误。
我有一个自定义标记,它在两个对象上应用除法和浮点数。如果被分割的字段没有初始值“0”,这就是预期的,这就是生成“无”值的原因。
我想要完成的是过滤掉None或忽略'0'的初始值,只返回一个简单的字符串消息或一个'0'的整数。
@register.simple_tag()
def average(num1, num2):
return round(float(num1 / num2), 2)
以下是我的某个模板字段和执行该功能的标记的小片段。
<tr>
<th>Q1</th>
<td>{{total_sales.Q1}}</td>
<td>{{total_campaigns.Q1}}</td>
<td>{{total_ifs_signups.Q1}}</td>
<td>{{total_traffic.Q1}}</td>
<td>{% average total_traffic.Q1 total_sales.Q1 %}</td>
</tr>
错误信息:
Exception Type: TypeError
Exception Value:
unsupported operand type(s) for /: 'NoneType' and 'NoneType'
Exception Location: /Users/charlessmith/Documents/Development/nfy/reportly/reportly/dashboard/templatetags/simple_tag.py in average, line 8
一如既往;谢谢你的帮助。
答案 0 :(得分:1)
只需对num1
和num2
实施简单的类型/值检查:
@register.simple_tag()
def average(num1, num2):
if num1 and num2 and num1 != 0 and num2 != 0:
return round(float(num1 / num2), 2)
return 'Your error message'
答案 1 :(得分:0)
为什么不添加一个检查'0'或None的if语句?