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

Django前端无法打开已上传PDF文件问题求助

解决Django前端无法打开上传的PDF文件问题

问题说明

在Django管理面板上传PDF文件后,文件已成功存储且后台可见,但前端通过<a href="{{ opinion.tests }}">标签点击时无法打开PDF,页面无报错,需实现前端正常访问该PDF的功能。

相关代码

HTML代码

<a href="{{ opinion.tests }}">Your tests</a>
</div>

views.py代码

def report(request):
    if request.method == 'POST':
        try:
            name = request.POST['name']
            phone1 = request.POST['phone']
            print("name:", name, "phone", type(phone1))

            analysis = Report.objects.filter(phone=phone1)[0]
            opinion = {'opinion': analysis}
            return render(request, "reports.html", opinion)
        except:
            return render(request,"not_found.html")

models.py代码

from datetime import datetime
from django.db import models

class Report(models.Model):
    current_date = str(datetime.date.today())

    name= models.CharField(max_length=100)
    email= models.EmailField(max_length=1000)
    phone = models.IntegerField()
    previous_history =models.TextField(max_length=5000)
    current_diagnosis= models.TextField(max_length=5000)
    doctor = models.CharField(max_length=100)
    tests = models.FileField(upload_to='ptest/', default="")

    def __str__(self):
        return self.name + " | " + "Doctor : "+ self.doctor

解决方案

1. 修正模板中的文件链接

Django的FileField对象本身不是可访问的URL,需调用其url属性获取文件完整访问路径。修改HTML代码:

<a href="{{ opinion.tests.url }}">Your tests</a>
</div>

2. 配置媒体文件服务(开发环境)

Django默认不自动处理媒体文件访问,需添加以下配置:

  • 在settings.py中配置媒体路径:
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
  • 在项目根目录的urls.py中添加媒体路由:
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    # 其他自定义路由
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3. 检查文件存储路径与权限

  • 确认上传的PDF实际存储在MEDIA_ROOT/ptest/目录下;
  • 确保服务器进程拥有该目录及文件的读取权限,避免因权限不足导致无法访问。

内容的提问来源于stack exchange,提问作者Abdul Moiz Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:52:51