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 回答