Django Admin上传PDF 前端模板下载链接异常问题修复
Django Admin上传PDF前端下载链接失效修复
实现目标
管理员通过Django Admin后台上传PDF文件至MEDIA_ROOT目录,公开用户可通过前端模板页面的链接下载对应PDF。
初始配置
settings.py媒体、静态文件配置:
# 用户上传文件存储绝对路径 # Example: "/home/media/media.lawrence.com/media/" MEDIA_ROOT = str(BASE_DIR) + "/media/" # 媒体文件访问URL前缀,路径类配置需携带末尾斜杠 # Examples: "http://media.lawrence.com/media/", "http://example.com/media/" MEDIA_URL = '/media/' # 静态文件存储绝对路径 # Example: "/home/media/media.lawrence.com/static/" STATIC_ROOT = str(BASE_DIR) + "/static/" # 静态文件访问URL前缀 # Example: "http://media.lawrence.com/static/" STATIC_URL = '/static/'
models.py数据模型配置:
from django.db import models class ResumeModel(models.Model): pdf = models.FileField(upload_to="resume_app/media/resume/") # 实际上传路径为 根目录 > media > resume_app > media > resume
admin.py后台注册配置:
from django.contrib import admin from .models import ResumeModel admin.site.register(ResumeModel)
views.py初始视图逻辑:
from django.shortcuts import render from .models import ResumeModel def resume(request): resume = ResumeModel.objects.all() return render(request, 'resume.html', context={'resume':resume})
- 前端模板下载链接代码:
<a href="{{ resume.pdf.url }}">Click here to download PDF</a>
故障表现
鼠标悬停在模板下载链接上时,显示指向地址为localhost:8083/resume/(即当前页面路径),{{ resume.pdf.url }}模板变量未正确解析到已上传PDF的实际访问地址。经排查确认文件已成功上传至指定存储目录,不存在上传失败问题。
修复步骤
- 调整视图查询逻辑:原逻辑中
ResumeModel.objects.all()返回的是多条记录组成的QuerySet集合,无法直接读取单条记录的文件字段属性。结合仅需展示最新1份简历的业务场景,将查询语句修改为ResumeModel.objects.last(),直接返回最新上传的单条模型实例。 - 清理缓存与重建迁移:删除对应应用下的
__pycache__缓存目录与migrations迁移文件目录,重新执行迁移命令:
python manage.py makemigrations resume_app python manage.py migrate resume_app
- 重启Django服务,使用浏览器无痕窗口访问验证,下载链接可正常解析到PDF文件地址,下载功能运行正常。
内容的提问来源于stack exchange,提问作者wildcat89
相关产品推荐
相关产品推荐

