[Django]views中视图函数获取不到form表单提交的文件,request.FILES为空

Django视图层核心原理与实战技巧 Web开发中的视图层是处理HTTP请求与响应的核心组件,Django框架通过WSGI规范实现了高度抽象的视图机制。从技术原理看,视图本质上是可调用对象,支持函数视图(FBV)和类视图(CBV)两种模式,并提供了异步视图(Async Views)等现代特性。在工程实践中,开发者需要深入理解HttpRequest对象的GET/POST参数处理、文件上传(FILES)和会话管理(session)等核心功能,同时掌握JsonResponse、FileResponse等响应类型的应用场景。通过类视图的继承体系、视图装 阅读详情

问题描述:

        html代码为;

 <form action="/datasets.html" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input class = "row" type = "file" >
      <p> <button type ="submit">上传文件</button></p>
</form>

 然后视图函数的代码为:

def datasets(req):
    #req =  HttpRequest(req)
    if(req.method == "POST"):
        print(req.FILES)
        print(req.POST)
       
    return render(req,'datasets.html')

结果我提交了一个txt文件后,后台打印情况如下:

 可以看出,后台确实收到了POST的提交,但是获取的request.FILES为空。

我查询了非常多文档和博客,但是大多数解决办法都是设置enctype,input标签type设置为file,设置csrf_token之类的。然而这些我都已经照做了。。。。

原因和解决办法:

input标签没有设置name属性!!

设置一下name:

然后看看结果:

成功!

但是为啥没设置name就不会 获取到呢?

因为name属性用于对提交到服务器后的表单数据进行标识,或者在客户端通过 JavaScript 引用表单数据。一个控件是否设置它的 name 属性是不会影响到这个网页的功能实现的。但是,当我们需要把这个控件所关联的数据传递到数据库时,就必须要设置 name 属性。

从打印的结果来看也好理解:数据结构是一个字典,我们设置的name成为了字典的key,上传的数据(文件)成为了字典项的value,如果我们不设置name那么就没有办法设置item.key那自然没办法获取数据了。

 总结:

如果不注意细节,写代码会花费更多的时间。

解决Django的request.POST获取不到内容的问题 今天小编就为大家分享一篇解决Django的request.POST获取不到内容的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

在Ubuntu 18下安装SIMULIA Abaqus 2020

参考资料: https://github.com/imirzov/Install-Abaqus-2019-on-Ubuntu-18.04-LTS 安装环境: Ubuntu 18.4 LTS 软件版本: SIMULIA for Linux 2020 1 准备 安装光盘及破解文件 解压光盘至一目录,不能挂载,因为要修改文件内容 /home/sunwk/Downloads/abaqus2020 更改文件权限为最大 sudo chmod -R 777 abaqus2020/ * 复制libpng12

oak619的博客 1万+

Django request.FILES为空问题的解决

AttributeError: 'NoneType' object has no attribute 'name'的问题;Django request.FILES为空;

gongzairen的博客 1101

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1142

flask——前端form表单上传文件时用request.files获取不文件对象的解决办法

原因: form标签中没有指明enctype 例子: <form action="http://127.0.0.1:5000/file" method="POST" enctype="multipart/form-data"> <input type="file" name="fileupload"> <input type="submit" val...

GC 6873

什么!!!寒假就要准备暑期实习

介绍暑期实习,从作用,时间线,投递渠道,技术准备,常见问题,经验教训几个方面介绍暑期实习

今天不coding的博客 1725

11. TI MSPM0G3507 DMA传输实战:ADC数据自动搬运与电压采集

本文以TI MSPM0G3507为例,详细讲解了如何利用DMA(直接存储器访问)实现ADC数据的自动搬运与电压采集。通过实战演示,解放CPU资源,提升系统实时性与效率,适用于电赛备赛及嵌入式开发中的数据采集场景。

weixin_42465140的博客 131

第二周内容总结3-7

第二周内容总结 第一天 django主要目录结构 - app目录 app文件目录 ​ migrations文件夹 存放orm操作数据库的命令 ​ admin.py django自带的后台管理功能 ​ apps.py 每个应用的独立标识 ​ models.py 模型层 ​ tests.py 测试文件 ​ views.py 视图函数 也叫视图层 django项目同名文件夹目录 ​ urls.py 路由层 ​ settings.py 配置文件

qq_1617271856的博客 379

工程伦理-知识点汇总

工程伦理-知识点汇总

m0_46091747的博客 1万+

Django入门第一个坑

首先通过pycharm创建一个Django项目 File ==> New ProJect ==> Django 先看看目录结构,测试一下看看项目能否正常运行 HelloWorld 首先,在ulrs.py 配置路由的路径 #导入app views 模块 from app import views urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index) ] 其次,在app中的vi

一生有博的博客 766

Windows 2008 R2虚拟机跑金蝶K3 WISE 12.1的5个关键配置细节(附避坑清单)

本文详细介绍了在Windows Server 2008 R2虚拟机中部署金蝶K3 WISE 12.1的5个关键配置细节,包括服务器角色与账户权限、组件服务调优、数据库与中间层协同部署、补丁管理策略及性能优化工具。这些实战经验可帮助企业IT团队避免常见陷阱,确保ERP系统稳定运行。

weixin_30847939的博客 318

Spring Authorization Server自定义密码模式:突破标准OAuth2限制,实现MFA与复杂业务集成

OAuth 2.0授权框架是构建现代应用安全体系的基石,其密码模式(Resource Owner Password Credentials Grant)提供了一种直接的资源所有者凭证交换令牌的机制。该模式的核心原理是客户端收集用户密码并直接向授权服务器请求访问令牌,适用于受信任的客户端场景。在技术价值上,它简化了某些传统应用的OAuth集成流程。然而,标准实现往往难以满足复杂的现实业务需求,例如需要集成多因素认证(MFA)、对接外部LDAP目录服务或执行自定义密码加密校验等场景。Spring Authori

weixin_34302561的博客 437

Django框架下的form表单提交数据(及文件)获取的方法

Django框架下的form表单提交数据(及文件)获取的方法。

HowToPause的博客 4027

模拟电路综合笔试题解析

本专栏预计更新60期,当前为第10期,文章约6000字,旨在帮助读者掌握模拟电路笔试的核心知识点与实战技巧。文章分为五个章节,涵盖基础理论、高频考点、大厂题目解析等内容。首先,文章详细解析了DC-DC与LDO的区别及选型依据,并通过真题分析帮助读者理解其应用场景。接着,文章深入探讨了运放电路设计、同步降压电路设计等高频考点,并结合实际案例提供解决方案。此外,文章还分享了特斯拉、华为、大疆等大厂的面试题及解析,帮助读者应对复杂电路设计挑战。最后,文章总结了模拟电路设计中的关键技巧与优化方法,为读者提供全面的笔

启芯硬件的博客 469

Django高级扩展之文件上传

文件上传是一个比较常用的网站功能,在服务器端,Django会使用一个叫作request.FILES的对象来处理上传的文件。本文将实现单文件和多文件两种上传。

json_li的博客 4569

基于单片机的无线叫号系统设计(51x2+12864x2+nRF24L01+WT588+KEY14) 0459

1、采用51/52单片机作为主控芯片;2、系统分有取号功能板和叫号功能板,采用NRF24L01进行2.4G通信;3、取号功能板:按下取号键开始取号,LCD12864显示取得的号码和当前等待人数;4、叫号功能板:有三个窗口,每个窗口有四个键,分别是呼叫键,重复呼叫键,静音键,暂停服务键;任一窗口按下叫号键后,蜂鸣器响,语音模块+喇叭提示“请×号到×号窗口”;LCD12864显示窗口叫号信息;每个窗口能独立暂停该窗口的服务。

基于强区分性特征挖掘的无监督行人重识别.zip

基于强区分性特征挖掘的无监督行人重识别.zip

Django表单处理:从基础到高级实践

Web表单是用户与服务器交互的核心组件,Django框架通过其强大的表单系统简化了这一过程。表单处理涉及数据验证、安全防护和用户体验等多个方面,Django的Form和ModelForm类提供了完整的解决方案。从基础字段类型到自定义验证逻辑,再到表单集和文件上传等高级特性,Django表单系统支持各种复杂场景。在实际开发中,合理运用CSRF防护、XSS防护等安全措施,结合表单缓存和AJAX提交等性能优化技巧,可以构建既安全又高效的Web应用。本文以图书管理系统为例,详细讲解Django表单的设计、验证、渲染

weixin_33749242的博客 365

基于matlab的ROMS工具.zip

基于matlab的ROMS工具.zip

plsql 往视图传参数_Day62 Django视图层(views.py)

目录Django三板斧JsonResponse对象form表单上传文件及后端如何获取request对象方法补充FBV与CBV(视图函数既可以是函数也可以是类)CBV源码剖析1、Django三板斧HTTPResponse:返回字符串类型render:返回HTML页面,并且在返回给浏览器之前还可以给HTML文件传值redirect:重定向视图函数必须要返回一个HTTPResponse对象,否则会报错。...

weixin_31068553的博客 336

K210训练YOLO模型[项目代码]

本文详细介绍了在K210开发板上训练和部署YOLO目标检测模型的完整流程。首先,作者阐述了材料准备和项目目标,即使用YOLO模型完成水面漂浮垃圾的检测任务。接着,文章分步骤讲解了数据集制作过程,包括使用K210采集图片、标注图片(使用labelImg工具)以及处理图片压缩问题以避免训练报错。随后,作者详细说明了Mx-yolov3的环境配置,包括Python和CUDA的版本管理,并提供了相关博客链接供参考。最后,文章分享了模型训练和部署的具体方法,展示了测试结果,并总结了项目经验,指出数据集规模不足是模型性能受限的主要原因,提出了后续改进方向。

Django静态文件配置与request对象方法

文章目录Django静态文件配置与request对象方法一、静态文件与配置1.静态文件示例:2.静态文件配置3.静态文件进阶操作3.1 接口前缀3.2 验证:补充:1.你在同一个窗口开了好几个Django项目,一直在跑的其实是第一个Django项目2.取消网页浏览器缓存3.3 动态解析动态解析模板语法:二、request对象方法1.form表单回顾2. form表单三个属性:2.1 action参数三种书写方式:2.2 method参数:请求方式:3.request对象方法3.1 request.metho

淘小欣的博客 803

python 文件上传 web_Python Web框架篇:Django文件上传

上传方式:- Form表单上传文件- Ajax上传文件- 基于form表单和iframe自己实现ajax请求1,创建项目2,settings配置(注册app01,static路径等等这些)及url添加(略过)3,views视图函数form的视图收到了在request.FILES中的文件数据。从上述form来的数据可以通过request.FILES['file']来存取。特别注意的是,只有当requ...

weixin_39788382的博客 144

django 中上传文件

使用requests.FILE获取上传文件 首先需要一个html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Upload a file</title> {% load static %} &l...

、Edgar的博客 205

Django——视图层

'''FBV全称Function Based View CBV全称Function Based View. FBV和CBV各有千秋# CBV特点: 能够直接根据请求方式的不同直接匹配到对应的方法执'''# 路由层使用# 视图层使用passpass# 三板斧三板斧: HttpResponse, render, redirect第一点: 视图函数本质就是返回HttpResponse对象, render, redirect都继承了HttpResponse类.第二点: render内部原理。

m0_71115526的博客 693

Django--表单

Django 表单 HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。 HTTP 请求 HTTP协议以"请求-回复"的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。 GET 方法 GET方法,视图显示和请求处理分成两个函数处理。 POST 方法 提交数据时更...

weixin_30741653的博客 170

Django(文件上传)

定义:用户可以通过浏览器将图片等文件传至网站 场景:用户上传头像,上传流畅性的文档[PDF,txt等] 文件上传必须为POST提交方式 表单<form>中文件上传时必须带有enctype = “multipart/form-data”时才会包含文件内容数据 表单中用<input type = 'file' name = 'xxx'>标签上传文件 #views.py代码: def test_upload(request): if request.method ==

weixin_52804560的博客 409

Django视图层核心:HttpRequest与HttpResponse详解

在Web开发中,请求与响应处理是框架的核心功能。Django作为Python主流Web框架,其视图层通过HttpRequest和HttpResponse对象实现了完整的HTTP协议处理。HttpRequest封装了请求方法、参数、头部等元数据,而HttpResponse体系则提供了包括JSON响应、文件下载等丰富的响应类型。这种设计模式在RESTful API开发中尤为重要,能有效处理表单提交、文件上传等常见场景。通过流式响应(StreamingHttpResponse)和文件响应(FileResponse

weixin_33766805的博客 298

Django06:视图层/上传文件/request 方法补充/FBV与CBV

三板斧 HttpResponse, 返回字符串类型 render, 返回html页面,而且在返回给浏览器之前,可以给html文件传值 redirect 重定向 总结:视图函数必须返回一个HttpResponse对象, 查看源代码能发现。 JsonResponse对象 json用途: 前后端过渡,实现跨语言传递数据。 普通方式返回json data = {"name": "小黑", "age": 18} data2 = [11, 22, 33, 44] .

winterye12的博客 198

Django视图层核心机制与HttpRequest对象解析

在Web开发中,请求与响应处理是构建应用的基础。Django作为流行的Python Web框架,其视图层通过HttpRequest和HttpResponse对象实现了高效的请求响应机制。HttpRequest对象封装了客户端请求的所有信息,包括请求体、查询参数、文件上传等关键数据,开发者可以通过这些属性实现表单处理、API数据解析等功能。而HttpResponse及其子类则提供了灵活的响应方式,支持文本、JSON、文件下载等多种内容类型。理解这些核心机制对于构建高性能Web应用至关重要,特别是在处理文件上传

weixin_34178244的博客 361
上一篇: 杨辉三角之组合数解法
下一篇: Python django写视图函数request的方法和属性没有自动补全代码提示(包括写其他代码的时候函数参数的变量没有代码提示)
咖啡咖_CoffCa
博客等级 码龄6年 116粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡咖_CoffCa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值