Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tamporaly在Django中保存和清理图像对象_Python_Django_File_Temporary Files - Fatal编程技术网

Python Tamporaly在Django中保存和清理图像对象

Python Tamporaly在Django中保存和清理图像对象,python,django,file,temporary-files,Python,Django,File,Temporary Files,我正在创建一个Django网站,用户可以在其中发布他们想要出售/易货的二手物品的详细信息 发布商品时,最后第二步是上传(最多3张)正在出售商品的照片。最后一步是提供个人详细信息(姓名、地址、手机)。在此之后,广告最终确定并进入“待批准”队列 我不想保存照片到数据库,直到广告完成。因此,我想暂时保存对从表单检索到的对象的引用,如下所示: request.session["photo"] = form.cleaned_data.get('photo',None) 到目前为止还不错,还是有问题?假设

我正在创建一个Django网站,用户可以在其中发布他们想要出售/易货的二手物品的详细信息

发布商品时,最后第二步是上传(最多3张)正在出售商品的照片。最后一步是提供个人详细信息(姓名、地址、手机)。在此之后,广告最终确定并进入“待批准”队列

我不想保存照片到数据库,直到广告完成。因此,我想暂时保存对从表单检索到的对象的引用,如下所示:

request.session["photo"] = form.cleaned_data.get('photo',None)
到目前为止还不错,还是有问题?假设到目前为止一切都是正确的

接下来,一旦广告最终确定,我将把图像保存到我的存储后端,并从
请求.会话
字典中弹出
照片

但是如果用户在完成广告前退出怎么办?如果创建了
request.session[“photo”]
条目,但用户从未完成广告,我将如何处理这种情况?上载的文件对象保存在哪里


基本上,我需要一种有效的方法来处理“孤立的”request.session图像条目和相关的UploadedFile对象

使用会话的主要问题是,它们不需要处理大量数据,而且由于编码、RAM填充、框架的垃圾收集过程等原因,它们可能会丢失信息。这实际上取决于您如何存储会话对象,如果您已经解决了这个问题,请转到第二步

第一步:您可能需要制作一个单独的模型来临时存储图像,存储日期和图像文件参考(通过ImageField),您可以使用该字段的
upload\u
参数告诉该模型将文件上载到媒体目录上的临时位置

第二步:设置一个管理命令,从特定日期筛选孤立模型(超过10分钟左右的图像),然后将其与图像一起删除(这非常重要,因为删除数据库记录不会删除文件)。管理命令应该能够在没有用户干预的情况下运行


第三步:设置计算机的Crontab或任何用于调度进程的工具,以便根据需要每天或每小时运行管理命令。

使用会话的主要问题是它们不需要处理大量数据,并且可能会因编码而丢失信息,RAM填充、框架的垃圾收集过程等等。这实际上取决于您如何存储会话对象,如果您已经解决了这个问题,请转到第二步

第一步:您可能需要制作一个单独的模型来临时存储图像,存储日期和图像文件参考(通过ImageField),您可以使用该字段的
upload\u
参数告诉该模型将文件上载到媒体目录上的临时位置

第二步:设置一个管理命令,从特定日期筛选孤立模型(超过10分钟左右的图像),然后将其与图像一起删除(这非常重要,因为删除数据库记录不会删除文件)。管理命令应该能够在没有用户干预的情况下运行


第三步:设置计算机的Crontab或任何用于调度进程的工具,根据需要每天或每小时运行管理命令。

我已设置芹菜队列。我应该每天安排一个芹菜任务来处理孤立的模型吗?第二:刚刚看到这篇老帖子:似乎当模型实例被删除时,就不需要在Django中手动删除底层文件了?芹菜队列就可以了,在这种情况下,你甚至不需要发出管理命令,只是一个处理模型的函数。另外,这篇文章很旧,Django1.3中删除了文件,我已经设置了芹菜队列。我应该每天安排一个芹菜任务来处理孤立的模型吗?第二:刚刚看到这篇老帖子:似乎当模型实例被删除时,就不需要在Django中手动删除底层文件了?芹菜队列就可以了,在这种情况下,你甚至不需要发出管理命令,只是一个处理模型的函数。而且,这篇文章很旧,Django 1.3中删除了文件