Django网站已上传.docx文件无法下载,请求技术协助
问题排查与修复方案
你的代码存在多处语法和逻辑错误,直接导致下载功能失效,下面逐个修正:
1. 模型代码错误
model.Model拼写错误,正确写法是models.Model,同时别忘了导入models模块:
from django.db import models class Files(models.Model): name = models.CharField(max_length=200) doc_File = models.FileField(upload_to='media')
2. 视图代码错误
Files.objects.filter('doc_File')语法完全错误,filter()需要传入键值对格式的条件;如果要获取所有上传文件,直接用all()即可:
def Uploaded(request): files = Files.objects.all() # 变量名改为files,贴合多文件场景 return render(request, 'uploaded_files.html', {'files': files})
3. URL配置错误
引号未闭合,路径缺少结尾斜杠,修正后:
from django.urls import path import views urlpatterns = [ # 其他URL配置... path('file/', views.Uploaded, name='file'), # 闭合引号,添加结尾斜杠 ]
4. HTML模板错误
{% url 'f.url' %}用法错误:url标签用于生成路由URL,文件下载链接直接用模型中doc_File字段的url属性即可Download属性不符合HTML标准,需小写为download- 显示文本应该用文件名(模型中的
name字段或doc_File.name),而非不存在的f.url
修正后的模板代码:
{% block content %} <h4>Download Document Below</h4> {% for f in files %} <!-- 变量名要和视图传入的files对应 --> <a href="{{ f.doc_File.url }}" download>{{ f.name }}</a> {% endfor %} {% endblock %}
5. 关键配置:媒体文件访问设置
Django默认不会公开上传的媒体文件,必须在项目中添加以下配置:
settings.py
import os MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
项目根URL配置
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 你的其他URL配置... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
完成以上修正和配置后,用户点击链接即可正常下载docx文件。
内容的提问来源于stack exchange,提问作者alphies pro
相关产品推荐
相关产品推荐

