1

Django テンプレートで、表示しているこのすべての携帯電話番号から最初のゼロを削除するにはどうすればよいですか。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))
4

5 に答える 5

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 %}
于 2013-01-14T12:26:16.083 に答える
2

それを行うには多くの方法があります。

  • カスタム テンプレート フィルタを作成する
  • ユーザー入力をフィルタリングし、先頭のゼロが既に取り除かれた状態で電話を保存します
  • カスタム オブジェクト @property を作成し、ゼロを取り除いてモバイルを返します (これは少し汚れています)。
  • テンプレートをレンダリングする前にクリーンアップを行う
于 2013-01-14T12:15:45.827 に答える
1

データを正しい形式でテンプレートに渡す必要があります。Django テンプレートは、PHP のように「HTML が散在する Python」ではありません。

たとえば、最初dataにビューに your を渡すときは、ゼロが既に削除された iterable であることを確認する必要があります。

lstripDjango テンプレートのミニ言語にはありません。

編集: 最初の桁が常に 0 になることがわかっている場合は、次のようにすることもできます。

{{ object|slice:"1:" }}
于 2013-01-14T12:03:14.150 に答える
0

動作する方法が1つあります(ただし、0以上を削除するというより多くの応急修理です0)-そして、数値を最初に浮動小数点数に変換できる場合(つまり、スペースなし)のみ

In [23]: t = Template('{{ value|floatformat:0 }}')

In [24]: t.render(Context({'value': '00123'}))
Out[24]: u'123'
于 2013-01-14T12:31:17.097 に答える
-1

カットを使用できます( number からすべてのゼロをカットします)

またはあなたが使用することができます

phone2numeric Imo のより良いオプション

于 2013-01-14T12:10:25.863 に答える