Ошибка — нет файла Загрузка загруженных файлов в Django

У меня есть модель в Django, в которой объект может иметь несколько загруженных файлов:

из django.db импортировать модели из model_utils.models импортировать TimeStampedModel из .managers импортировать ProviderManager

class Provider(TimeStampedModel):

    full_name = models.CharField('Nombre', max_length=100, unique=True)
    phone1 = models.CharField("Teléfono", max_length=50, blank=True, null=True)
    phone2 = models.CharField("Teléfono", max_length=50, blank=True, null=True)
    email1 = models.EmailField("Email", max_length=100,
                               blank=True, null=True)
    email2 = models.EmailField("Email", max_length=100,
                               blank=True, null=True)
    bank_info = models.TextField(
        "Info Banco", max_length=250, blank=True, null=True)

    objects = ProviderManager()

    class Meta:
        verbose_name = "Proveedor"
        verbose_name_plural = "Proveedores"
        ordering = ["full_name"]

    def __str__(self):
        return "Nombre: "+self.full_name

    def get_provider_files_names(self):
        provider_files = self.provider_files.all()
        file_list = []
        for f in provider_files:
            # print(f.file.name.split('/')[-1])
            file_list.append(f.file.name.split('/')[-1])
        return file_list

    def get_provider_files_urls(self):
        provider_files = self.provider_files.all()
        file_list = []
        for f in provider_files:
            file_list.append(f.file.url)
        return file_list


class ProviderFiles(TimeStampedModel):
    file = models.FileField(upload_to="provider_files/%Y/%m/%d")
    provider = models.ForeignKey(
        Provider, on_delete=models.CASCADE, related_name='provider_files')

    class Meta:
        verbose_name = "Archivos Proveedor"
        verbose_name_plural = "Archivos Proveedores"

    def __str__(self):
        return "Nombre Proveedor: "+self.provider.full_name

Итак, в моем html я хотел бы получить доступ к файлам сущностей и предоставить пользователям ссылки для загрузки этих файлов:

<td>
                <a href="{{ provider.get_provider_files_urls.0 }}" download="{{ provider.get_provider_files_urls.0 }}"> Download File</a>
</td>

Итак, когда начинается загрузка, происходит сбой с ошибкой Failed - No file (файл существует)

только для того, чтобы вы видели путь, по которому идете

Также важно, если я получаю доступ к администратору, проверяю загруженные файлы и открываю их, страница говорит, что не найдена

http://localhost:8000/media/provider_files/2021/02/24/Catalogo_2021_R0oiQHD.png


person Guillermo Zooby    schedule 03.03.2021    source источник
comment
Является ли часть /2021/02/24 преднамеренной в URL-адресе, так как я думаю, что косая черта даты в URL-адресе может быть неправильно интерпретирована django. Я предлагаю вам попробовать удалить это из URL-адресов СМИ.   -  person Hemant Malik    schedule 04.03.2021
comment
Привет @HemantMalik, спасибо. Я попытался удалить дату в папках для загрузки, но ошибка сохраняется. Теперь файл находится в корне провайдера_файлов, но все равно ошибка No File.   -  person Guillermo Zooby    schedule 04.03.2021


Ответы (1)


Добавление последней строки в основной urls.py решило проблему:

from django.contrib import admin
from django.urls import path, re_path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    # users app
    re_path('', include('applications.users.urls')),
    re_path('', include('applications.home.urls')),
    re_path('', include('applications.clients.urls')),
    re_path('', include('applications.providers.urls')),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
person Guillermo Zooby    schedule 05.03.2021