91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • django中如何實現多文件上傳、form提交和多對多外鍵保存操作

django中如何實現多文件上傳、form提交和多對多外鍵保存操作

發布時間:2021-07-23 14:40:41 來源:億速云 閱讀:475 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關django中如何實現多文件上傳、form提交和多對多外鍵保存操作,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

需求:

需要實現一個用戶反饋的接口,用戶通過接口提交:

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提交和多對多外鍵保存操作”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上栗县| 当涂县| 全南县| 福建省| 锦州市| 定西市| 颍上县| 武义县| 全南县| 延吉市| 宜城市| 汤阴县| 阳西县| 保靖县| 渑池县| 石河子市| 德钦县| 昌宁县| 华安县| 徐州市| 怀来县| 荣成市| 大庆市| 湟源县| 武穴市| 石屏县| 克东县| 济宁市| 屯门区| 灵丘县| 含山县| 肥西县| 莱阳市| 宁安市| 潞城市| 定陶县| 邵武市| 贡山| 米脂县| 大悟县| 怀来县|