如何在Django Rest中为Google云存储中的文件生成签名的URL?

时间:2018-10-11 13:24:57

标签: django django-models django-rest-framework google-cloud-storage

我正在使用Django Rest框架来制作API。与此同时,我正在使用Google Cloud Storage存储媒体文件。我有一些疑问:

  1. 如何使用django rest框架生成签名文件的URL?我一直在用相同的工具搜索网络,但无法获得清晰的图片。 Link

  2. 那么,如果我删除数据库中的文件,该文件也会自动从Google云存储中删除吗?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

  

如何使用django rest框架生成签名文件的URL?

django-storage模块将自动为您解决此问题。

您可以很容易地检查它,如果您已将资产上载到服务器,请检查模型的FileField字段中的url。 (在我的情况下,它称为raw

enter image description here

如果转到右侧,则将在URL中看到Signature参数。重新加载页面后,您会看到签名的值发生了变化,证明您实际上使用的是临时签名的URL。

默认到期时间为86400秒(1天),您可以使用GS_EXPIRATION变量change

  

那么,如果我删除数据库中的文件,该文件也会自动从Google云存储中删除吗?

默认情况下不是,但是您可以通过overriding模型的delete method

轻松添加此功能
class MyModel(models.Model):
    myfile = models.FileField(upload_to='filename/')

    def delete(self, *args, **kwargs):
        self.myfile.delete()
        super(SynthesisArtifact, self).delete(*args, **kwargs)