您可以使用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 }}
但是请注意,扩展名只是最后一个点之后的部分。某些文件没有扩展名,除非该点是文件名的第一个字符。没有官方的扩展名列表。
@Enes:为什么会不安全?该库本身并不是不安全的(它甚至是一个标准库,因此已经可用)。的
os.path.splitext
,不会使操作系统的调用,它是文本处理。@Enes:您可以在此处查找源代码:github.com/python/cpython/blob/master/Lib/ntpath.py#L195