在Django模板中,如何从我正在显示的所有移动号码中删除第一个Zero。在Python中我试过这个但没有成功......
{% for object in data %}
{{ object.mobile.lstrip('0') }}
{% endfor %}
views.py
def sms(request, incentive):
objectQuerySet = Recipient.objects.filter(incentiveid=incentive)
context = {'data':objectQuerySet}
return render_to_response('smssend.html', context, context_instance=RequestContext(request))
答案 0 :(得分:2)
有很多方法可以做到这一点。
答案 1 :(得分:2)
我假设您需要在应用程序的其他位置使用类似的逻辑,那么为什么不在模型中添加方法来清理数据呢?以下代码假设您的移动字段是字符串。
class Recipient(models.Model):
...
def mobile_no_zero(self):
return self.mobile[1:] if self.mobile.startswith('0') else self.mobile
然后您可以从模板中调用该方法:
{% for object in data %}
{{ object.mobile_no_zero }}
{% endfor %}
答案 2 :(得分:1)
您应该以正确的格式将数据传递到模板。 Django模板不像PHP那样“穿插HTML”。
例如,当您第一次在视图中传递data
时,应该确保它是一个已经剥离的零的迭代。
Django模板迷你语言中没有lstrip
。
编辑:如果你知道第一个数字总是0,你也可以这样做:
{{ object|slice:"1:" }}
答案 3 :(得分:0)
有一种方法可以正常工作(但更多的是kludge,任何东西,并删除0或更多0
s) - 并且只有当数字可以转换为浮动开始时(即,没有空格)
In [23]: t = Template('{{ value|floatformat:0 }}')
In [24]: t.render(Context({'value': '00123'}))
Out[24]: u'123'
答案 4 :(得分:-1)
您可以使用剪切(它将从数字中删除所有零)
或者您可以使用
phone2numeric Imo它的beter选择