1

住所情報を含むテーブルがあります。これらのフィールドがあります。

  • 住所(1
  • アドレス2
  • ジップ

フィールドは不要です。これをテンプレートに表示して、うまくフォーマットしたいと思います。address_1、address_2、および都市/州/郵便番号の行の間に改行が必要です。両方が存在する場合は、都市と州の間にコンマも必要です。これを達成するための最良の方法は何ですか?テンプレートにif文を書き始めたのですが、少し扱いに​​くくなってきました。大きな問題は、ユーザーが入力できるのは都市と州のみ、郵便番号のみ、完全な形式の住所、またはそれらの間の任意のものであることです。

4

2 に答える 2

3

これを実現する多くの方法がありますが、それほどエレガントなものはありません。これをリングに投げ込みます...これをハンドラーで実行address_partsし、テンプレート コンテキストに渡します。

## Gather the address components in groups, removing any that are None
address_parts = filter(None, [
    model_obj.address_1,
    model_obj.address_2,
    u', '.join(filter(None, [model_obj.address_city, model_obj.state])),
    model_obj.zip,
])


## In the template, join the address groups
{{ address_parts|join:"<br>" }}
于 2012-07-29T23:34:59.227 に答える
1

単純なカスタム フィルターを追加して、変数が存在する場合に変数にテキストを追加する場合:

@register.filter
def append(arg, suffix):
    return arg + suffix if arg else ''

次に、次のようなことができます

{{ address_1|append:"<br/>" }}
{{ address_2|append:"<br/>" }}
{{ city|append:", " }}{{ state|append:" " }}{{ zip }}

これを a<table>または何でもしたい場合は、同様のprependフィルターを使用することもできます。

于 2012-07-29T23:20:56.077 に答える