program story

Django FileField : 파일 이름 만 반환하는 방법 (템플릿에서)

inputbox 2021. 1. 5. 08:05
반응형

Django FileField : 파일 이름 만 반환하는 방법 (템플릿에서)


내 모델 유형에 필드가 FileField있습니다. 이것은 File다음과 같은 방법을 가진 유형의 객체를 제공합니다 .

File.name:의 상대 경로를 포함하는 파일의 이름입니다 MEDIA_ROOT.

내가 원하는 것은 " .filename" 와 같은 것인데 파일 이름 만 제공하고 경로는 제공하지 않습니다.

{% for download in downloads %}
  <div class="download">
    <div class="title">{{download.file.filename}}</div>
  </div>
{% endfor %}

다음과 같은 것을 줄 것입니다. myfile.jpg


모델 정의에서 :

import os

class File(models.Model):
    file = models.FileField()
    ...

    def filename(self):
        return os.path.basename(self.file.name)

템플릿 필터를 생성하여이를 수행 할 수 있습니다.

에서 myapp/templatetags/filename.py:

import os

from django import template


register = template.Library()

@register.filter
def filename(value):
    return os.path.basename(value.file.name)

그런 다음 템플릿에서 :

{% load filename %}

{# ... #}

{% for download in downloads %}
  <div class="download">
      <div class="title">{{download.file|filename}}</div>
  </div>
{% endfor %}

name 속성을 사용하여 파일 필드 개체에서 파일 이름에 액세스 할 수 있습니다.

class CsvJob(Models.model):

    file = models.FileField()

그런 다음 사용하여 특정 개체 파일 이름을 얻을 수 있습니다.

obj = CsvJob.objects.get()
obj.file.name property

참조 URL : https://stackoverflow.com/questions/2683621/django-filefield-how-to-return-filename-only-in-template

반응형