我有一张包含地址信息的表格。它有这些字段。
- 地址1
- 地址2
- 城市
- 状态
- 压缩
不需要任何字段。我想在模板中显示它并很好地格式化它。我想要 address_1、address_2 和城市/州/邮编线之间的换行符以用于任何存在的那些。如果两者都存在,我还希望在城市和州之间使用逗号。实现这一目标的最佳方法是什么?我开始在模板中编写一个 if 语句,但它似乎变得有点笨拙。最大的问题是用户只能输入城市和州、邮政编码、完整地址或介于两者之间的任何内容。
我有一张包含地址信息的表格。它有这些字段。
不需要任何字段。我想在模板中显示它并很好地格式化它。我想要 address_1、address_2 和城市/州/邮编线之间的换行符以用于任何存在的那些。如果两者都存在,我还希望在城市和州之间使用逗号。实现这一目标的最佳方法是什么?我开始在模板中编写一个 if 语句,但它似乎变得有点笨拙。最大的问题是用户只能输入城市和州、邮政编码、完整地址或介于两者之间的任何内容。
实现这一目标的方法有很多,没有一种可能是那么优雅。我会把它扔进环...在你的处理程序中做这个,并传递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>" }}
如果您添加一个简单的自定义过滤器以将文本附加到变量(如果存在):
@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
过滤器。