如果fruits是列表['apples', 'oranges', 'pears']

有没有一种使用Django模板标签快速生成"苹果、橙子和梨"的方法?

我知道使用一个循环和{% if counter.last %}条语句来实现这一点并不困难,但因为我要反复使用它,我想我必须学习如何编写自定义的标记过滤器,如果已经完成了,我不想重新发明轮子.

作为扩展,我试图放弃Oxford Comma(即返回"苹果、橙子和梨")的try 更为混乱.

推荐答案

这是我为解决问题而写的过滤(不含牛津逗号)

def join_with_commas(obj_list):
    """Takes a list of objects and returns their string representations,
    separated by commas and with 'and' between the penultimate and final items
    For example, for a list of fruit objects:
    [<Fruit: apples>, <Fruit: oranges>, <Fruit: pears>] -> 'apples, oranges and pears'
    """
    if not obj_list:
        return ""
    l=len(obj_list)
    if l==1:
        return u"%s" % obj_list[0]
    else:    
        return ", ".join(str(obj) for obj in obj_list[:l-1]) \
                + " and " + str(obj_list[l-1])

在模板中使用:{{ fruits|join_with_commas }}

Django相关问答推荐

查询在对象中使用django查询与一个包含句子

构造一个定制字符串(实体、年份和字母数字的组合)作为Django中的Postgres数据库的主键是否明智?

如何在Django表单中传递self.请求数据?

情节主题更改问题

如何访问 django 模板中的字典值?

使用OuterRef过滤器获取Django记录的最大值

从url参数过滤的Django日期范围返回空查询集

在 Django 中按月份和年份对帖子进行分类

如何在 Fargate 容器中运行的 Django 中使用 AWS SES?

如何在 Django 模型中存储元组列表

Django 如何知道我的数据库的路径?

在 python 视图中检测移动浏览器

如何从 django 模板生成静态 html 文件?

PyMongo vs MongoEngine for Django

如何创建一个在复选框右侧显示复选框标签的 Django 表单?

Django模型字段按变量

django 在 unittest 测试中设置环境变量

Django:验证上传文件的文件类型

如何在 Django 中更改上传文件的文件名?

在 Python 中生成 API KEY 和 SECRET 的最简单和最安全的方法是什么