/ 不支持的操作数类型:'NoneType' 和 'NoneType'
Unsupported operand type(s) for /: 'NoneType' and 'NoneType'
我正在使用 Django 1.8.3 和 Python 3.4.3
我知道这个问题已经回答了很多次,但是 none 的答案是针对我的情况的,我还在学习 Python,所以我很难拼凑出一个解决方案来解决什么问题是一个常见的错误。
我有一个自定义标签,可以在两个对象上应用除法和浮动。如果被划分的字段没有初始值“0”,这将按预期工作,这是产生 'None' 值的原因。
我想要完成的是过滤掉 None 或忽略“0”的初始值,而只是 return 一个简单的字符串消息或一个整数“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”或 None 的 if 语句?
只需执行一个简单的 type/value 检查 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'
我正在使用 Django 1.8.3 和 Python 3.4.3
我知道这个问题已经回答了很多次,但是 none 的答案是针对我的情况的,我还在学习 Python,所以我很难拼凑出一个解决方案来解决什么问题是一个常见的错误。
我有一个自定义标签,可以在两个对象上应用除法和浮动。如果被划分的字段没有初始值“0”,这将按预期工作,这是产生 'None' 值的原因。
我想要完成的是过滤掉 None 或忽略“0”的初始值,而只是 return 一个简单的字符串消息或一个整数“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”或 None 的 if 语句?
只需执行一个简单的 type/value 检查 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'