Загрузка PDF-файла через Django Admin, загрузка пользователями по ссылке на шаблоне

Я пытаюсь разрешить пользователям загружать PDF-файл, который я ранее загрузил в папку MEDIA_ROOT через консоль администратора. Я эмулировал ответ в этом посте, однако он неполный, и я не могу понять, как это исправить. Надеюсь, кто-нибудь сможет заметить мою проблему в приведенном ниже коде.

settings.py

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = str(BASE_DIR) + "/media/"

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'

# Absolute path to the directory that holds static files.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = str(BASE_DIR) + "/static/"

# URL that handles the static files served from STATIC_ROOT.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

models.py

from django.db import models

# Create your models here.
class ResumeModel(models.Model):
    pdf = models.FileField(upload_to="resume_app/media/resume/")
# So this file gets uploaded to root > media > resume_app > media > resume

admin.py

from django.contrib import admin
from .models import ResumeModel

# Register your models here.
admin.site.register(ResumeModel)

views.py

from django.shortcuts import render
from .models import ResumeModel

# Create your views here.
def resume(request):
    resume = ResumeModel.objects.all() # < Not sure if this part is needed?
    return render(request, 'resume.html', context={'resume':resume})

template.html

...
<a href="{{ resume.pdf.url }}">Click here to download PDF</a>
...

Когда я навожу курсор на эту ссылку, url, на который она указывает, localhost:8083/resume/, что является названием страницы, на которой мы сейчас находимся, поэтому я думаю, что <a href="{{ resume.pdf.url }}"> не указывает на правильный url файла PDF, который я загрузил. Загрузка работает, файл находится в папке root > media > resume_app > media > resume. Что мне нужно сделать, чтобы ссылка работала?

Вы отправляете в шаблон все объекты резюме, хранящиеся в базе данных:

resume = ResumeModel.objects.all()

Вы можете отправить конкретное резюме, идентифицированное по первичному ключу (см. this):

def resume(request, resume_id):
    resume =  get_object_or_404(ResumeModel, resume_id)
    return render(request, 'resume.html', context={'resume':resume})

В любом случае, вы можете протестировать шаблон, отправив первое резюме в базу данных:

def resume(request):
    resume =  ResumeModel.objects.first()
    return render(request, 'resume.html', context={'resume':resume})
Вернуться на верх