gpt4 book ai didi

Django 模板-递归使用 FilePathField 时如何输出文件的相对路径

转载 作者:行者123 更新时间:2023-12-02 06:58:29 24 4
gpt4 key购买 nike

我有以下 django 模型:

RESOURCE_DIR = os.path.join(settings.MEDIA_ROOT, 'resources')

class Resource(models.Model):
title = models.CharField(max_length=255)
file_name = models.FilePathField(path=RESOURCE_DIR, recursive=True)

我想在模板中提供文件的 URL,以便用户可以查看或下载它。

如果我在模板中使用 {{ resource.file_name }} ,它会输出服务器上文件的完整路径,例如如果 RESOURCE_DIR='/home/foo/site_media/media' 它输出 '/home/foo/site_media/media/pdf/file1.pdf' 而我想要的是'pdf/file1.pdf'。在管理或模型表单中,该选项在选择小部件中显示为 '/pdf/file1.pdf'。所以显然可以按照我的要求去做。当然,额外的斜线并不重要。如果我设置recursive=False,那么我可以删除最后一个斜杠之前的路径部分。

如何获得与 modelform 或 admin 相同的结果?

最佳答案

下面的内容位于前导路径分隔符中,这可能不是 url 需要的正斜杠

def url(self):
path = self._meta.get_field('file_name').path
return self.file_name.replace(path, '', 1)

略有改善

def url(self):
path = self._meta.get_field('icon').path
return "/" + self.icon[len(path)+1:]

关于Django 模板-递归使用 FilePathField 时如何输出文件的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242127/

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