首页 > 解决方案 > Django:这个 zip 文件在哪里创建?

问题描述

在某些情况下,我有一个django-rest-framework项目。这个特定的端点接受一个 json blob,并在将其保存到 FileField 之前对其进行压缩。我的问题是——我创建的这个 zip 文件到底在哪里保存?只是根目录?这些需要定期清理吗?

class MyModel(models.Model):
    ...
    def create_zip(self, user, jsondata):
        filename = "data" + ".zip"
        with gzip.GzipFile(filename, "w") as fout:
            fout.write(jsondata.encode("utf-8"))

        my_model = MyModel.objects.create(
            user=user, animation_file=filename
        )

标签: pythondjangodjango-rest-framework

解决方案


是的,似乎 zip 文件是在项目脚本的当前目录中创建的。这需要清理。

一个更清晰的方法是使用一些临时目录。例如,您可以TEMP_ROOT使用模块创建一个设置并为您的文件添加临时根路径前缀,os

from django.conf import settings

import os
file_path = os.path.join(settings.TEMP_ROOT, filename)

并使用这个 file_path 给gzip.GzipFile()方法而不是filename.

请确保临时目录已经存在。


推荐阅读