Загрузите файл в админке, а затем скачайте с сайта Django - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь создать веб-сайт, на котором клиент может загрузить файл в разделе администратора, а после этого любой человек может загрузить этот файл с веб-сайта. Желательно любые файлы, такие как pdf, exe, do c (возможно ли?). Я могу загрузить файл в Admin, и он показывает его на веб-сайте. Он загружает файл с правильным именем (сохранен на носителе), но показывает сбой, файл отсутствует.

Пока что у меня есть:

setting.py

STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = '/media/'

models.py

class TEACHING(models.Model):

    title = models.CharField(max_length=100)

    content = models.TextField()

    date_posted = models.DateTimeField(auto_now_add=True)

    excercise = models.FileField(upload_to="files/", default='default value')

    def __str__(self):

        return self.title

views.py

def teaching(request):

    context = { 'teaches' : TEACHING.objects.all()}

    return render(request, 'blog/teaching.html', context)

urls.py

if settings.DEBUG:

    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)

    urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

обучение. html

{% for teach in teaches %}    
    <a href="{{ teach.excercise }}" download>Download</a>
{% endfor %}

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Привет! Вы не указываете url в href, поэтому, пожалуйста, измените свой <a> следующим образом

<a href="{{ teach.excercise.url }}" download>Download</a>
0 голосов
/ 29 мая 2020

Управление файлами docs

Вы должны получить URL из поля файла

<a href="{{ teach.excercise.url }}" download>Download</a>
...