如何在没有扩展名的Django中获取图像名称

时间:2019-07-03 14:48:04

标签: django django-templates

如何获取不带扩展名的图像名称

我正在使用此代码,但是输出= imagename.jpg。

{{ post.image.name }}

我想要这样的output = imagename

1 个答案:

答案 0 :(得分:1)

您可以使用os.path.splitext [Python-doc]获得这样的名称,以在“根”和“扩展名”中分割文件名。但是您当然不能在Django模板中访问它。但是您可以定义模板过滤器

在您的应用中,您可以在名为templatetags的模块中的文件中定义这样的模板过滤器,例如ospath.py

# app/templatetags/ospath.py

from os.path import splitext

from django import template


register = template.Library()

@register.filter
def noext(value):
    return splitext(value)[0]

然后,您可以在模板中使用{% load ospath %}加载模板标签,然后使用noext模板过滤器:

{% load ospath %}

{{ post.image.name|noext }}

但是请注意,扩展名只是最后一个点之后的部分。某些文件没有扩展名,除非该点是文件名的第一个字符。没有扩展的正式列表。