Django本地展示数据库PDF失败:ERR_NAME_NOT_RESOLVED错误求助
解决Django本地展示PDF时的ERR_NAME_NOT_RESOLVED错误
核心问题分析
你遇到的ERR_NAME_NOT_RESOLVED错误,根源在于iframe的src路径配置错误,同时缺少Django媒体文件的必要访问配置,导致浏览器无法定位到PDF文件的正确位置。
分步解决方法
1. 修正HTML中的PDF路径
将certificates.html里的iframe src替换为FileField自带的url属性,它会自动生成正确的文件访问路径:
{% block content %} <main class="container my-4"> <h3 class="my-4 border-bottom pb-1">Сертификаты</h3> <div class="row"> {% for certificate in certificates %} <div class="card shadow"> <h1>{{certificate.title}}</h1> <iframe src="{{ certificate.pdf.url }}" width="100%" height="600px"> </iframe> </div> {% endfor %} </div> </main> {% endblock %}
注意:移除循环内冗余的<html>标签,避免破坏页面DOM结构。
2. 配置settings.py中的媒体文件参数
在项目的settings.py中添加以下配置,指定媒体文件的存储目录和访问URL:
from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent # 媒体文件配置 MEDIA_ROOT = BASE_DIR / 'media' MEDIA_URL = '/media/'
3. 在项目urls.py中添加媒体文件访问路由
开发环境下,需要让Django处理媒体文件的静态访问请求,在项目根目录的urls.py中修改:
from django.contrib import admin from django.urls import path from django.conf import settings from django.conf.urls.static import static from . import views urlpatterns = [ path('admin/', admin.site.urls), path('certificates/', views.certificates, name='certificates'), # 其他自定义路由... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
4. 验证文件存储位置
确认上传的PDF文件已存入项目根目录的media/pdf/文件夹下——Django的FileField(upload_to='pdf')会自动将文件存入这个路径。
完成以上配置后,重启Django开发服务器,访问证书页面即可正常加载PDF文件。
内容的提问来源于stack exchange,提问作者Artem
相关产品推荐
相关产品推荐

