You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:09:29