Как скачать файл из FileField django - PullRequest
1 голос
/ 17 февраля 2020

Я создаю приложение, которое позволяет пользователям загружать и скачивать файлы, используя Django.

У меня есть модель, которая хранит файлы:

class Document(models.Model):
    description = models.CharField(max_length=255, blank=True)
    unit_code = models.CharField(max_length=6)
    input = models.FileField(upload_to='documents/')
    uploaded_at = models.DateTimeField(auto_now_add=True)
    @property
    def filename(self):
        return os.path.basename(self.document.name)

Я могу отобразить список загруженных файлов в моем шаблоне с моей точки зрения как таковой:

def Document(request, str):
    documents = Document.objects.filter(unit_code=str)

И в шаблоне тег привязки для загрузки файла с использованием URL, как показано здесь :

{% for document in documents %}
    {{document.filename}}<a  href="{{document.input.url}}"> Download Document </a>
{% endfor %}

Прямо сейчас я получаю сообщение об ошибке страница не найдена (URL-адрес указывает на 127.0.0.1: 8000 / media / documents / file_name

Можно ли загрузить файл с помощью тега привязки с сервера разработки Django?

1 Ответ

0 голосов
/ 17 февраля 2020

Если вы правильно настроили настройки MEDIA_ ROOT и MEDIA_URL, вам нужно добавить что-то подобное в ваш urls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Вы можете прочитать документы здесь .

Важно : это решение подходит только для разработки. Для производства ваши медиа-файлы должны обслуживаться непосредственно с nginx (или с любого используемого вами веб-сервера), а не с Django

...