django多文件上传,form提交,多对多外键保存的实例


Posted in Python onAugust 06, 2019

需求:

需要实现一个用户反馈的接口,用户通过接口提交:

1.一段文字

2. 一个log文件

3. 多个图片

找了很多ModelForm,DRF-Serializer的资料,都没找到简单好用的,干脆就直接写,啥也不用。

Model.py

class UserFeedback(models.Model):
 user = models.ForeignKey(User, verbose_name="用户")
 desc = models.TextField(default="", verbose_name=u'问题描述')
 logfile = models.FileField(upload_to='UserFeedback/%Y/%m/', 
 verbose_name=u'log文件',null=True, blank=True)
 submit_time = models.DateTimeField(default=datetime.now, verbose_name="提交时间")
 images=models.ManyToManyField("UserFeedbackImages",verbose_name=u'图片')
 
class UserFeedbackImages(models.Model):
 image = models.ImageField(upload_to='UserFeedbackImages/%Y/%m/',
  verbose_name=u'反馈图片', null=True, blank=True)

由于一个反馈,可以保护多个图片,所以images字段是ManyToMany

html:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>用户反馈</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
 <textarea name="desc"></textarea>
 <input type="file" name="logfile">
 <input type="file" name="images" multiple>
 <button type="submit">提交</button>
</form>
</body>
</html>

<form>中必须要加上:

enctype="multipart/form-data"

和input中定义:

multiple

View.py中,先把所有的图片保存下来,然后在创建反馈后,添加图片关联。

class feedback(LoginRequiredMixin,APIView):
 def post(self, request):
  #save all images
  ret={}
  try:
   imgs=[]
   for payload in request.data.getlist("images"):
    img=UserFeedbackImages.objects.create(image=payload)
    imgs.append(img)  
   ufb=UserFeedback.objects.create(user=request.user,
   desc=request.POST.get("desc"),
   logfile=request.data.get("logfile"))
   for img in imgs:
    ufb.images.add(img)
   ufb.save()
   ret["status"]="success"
  except Exception as e:
   ret["status"]="fail"
   ret["msg"]=str(e)
  return Response(json.dumps(ret))

这样简单粗暴,也容易理解。这里记录下。

以上这篇django多文件上传,form提交,多对多外键保存的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
Python进程间通信用法实例
Jun 04 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
python计算导数并绘图的实例
Feb 29 Python
python filecmp.dircmp实现递归比对两个目录的方法
May 22 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
Python连接mysql方法及常用参数
Sep 01 Python
python 实现单例模式的5种方法
Sep 23 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
详解python中的index函数用法
Aug 06 #Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 #Python
对Django url的几种使用方式详解
Aug 06 #Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 #Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 #Python
django基于存储在前端的token用户认证解析
Aug 06 #Python
django基于cors解决跨域请求问题详解
Aug 06 #Python
You might like
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
python线程信号量semaphore使用解析
2019/11/30 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
董事长秘书岗位职责
2013/11/29 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
幼儿教师国培感言
2014/02/19 职场文书
物流专业自荐信
2014/05/23 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
js之ajax文件上传
2021/05/13 Javascript