gpt4 book ai didi

python - 在 Django 模板中获取文件扩展名

转载 作者:太空狗 更新时间:2023-10-29 22:01:14 25 4
gpt4 key购买 nike

我有这样的模型:

class File(models.Model):
name = models.CharField(max_length=45)
description = models.CharField(max_length=100, blank=True)
file = models.FileField(upload_to='files')

我在 View 中获取了所有 File 对象,并且根据文件类型,我想打印适当的类:

<a class="pdf">link</a>

<a class="word">link</a>

<a class="other">link<a/>

在我的模板中。

如何在 Django 模板中获取文件扩展名?

我想做这样的事情:

{% for file in files %}
{% if file.get_extension == 'pdf' %}
<a class="pdf">link</a>
{% elif file.get_extension = '.doc' %}
<a class="word">link</a>
{% else %}
<a class="other">link<a/>
{% endif %}
{% endfor %}

当然,'file.get_extension' 不存在...

最佳答案

您的模型缺少 .get_extension 吗?这很简单,只需添加它 :-) 您可以在模型上使用各种方法。所以像这样:

class File(models.Model):
name = models.CharField(max_length=45)
description = models.CharField(max_length=100, blank=True)
file = models.FileField(upload_to='files')

def extension(self):
name, extension = os.path.splitext(self.file.name)
return extension

(名称 .extension().get_extension() 更符合 pythonic,顺便说一句)。

你可以走得更远。你的模板中的 if/else 结构是不是有点乏味?它在 Python 代码中不那么麻烦:

class File(models.Model):
...
def css_class(self):
name, extension = os.path.splitext(self.file.name)
if extension == 'pdf':
return 'pdf'
if extension == 'doc':
return 'word'
return 'other'

这样模板更简单:

{% for file in files %}
<a class="{{ file.css_class }}">link</a>
{% endfor %}

关于python - 在 Django 模板中获取文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com