2017-08-14 65 views
0

我正在寫一個相當簡單的照片應用程序,使用django-rest-framework作爲存儲引擎的API和django-storage。前端正在寫Vue.js.我有上傳部分工作,現在我試圖提供照片。現在看起來很明顯,當瀏覽器嘗試從GCS加載圖像時,我只會得到一堆403 Forbidden錯誤。我在這方面做了一些閱讀,看來在我的情況下,最好的做法是生成一段時間內過期的簽名url。我一直無法爲此找到一個包,這正是我所希望的。簡而言之,我不清楚如何在Django中做到這一點。是否有任何Django軟件包可以爲Google Cloud Storage資源創建簽名的url?

回答

2

是的,看看google-cloud-storage

安裝:

pip install google-cloud-storage 

此外,還要確保你需要更多的東西來指代API Documentation

希望它有幫助!

+0

我發現了一個在那裏叫'generate_signed_url',這正是我需要的功能。你會在哪裏推薦在django-rest-framework應用中使用它?我正在考慮在'views.py'中使用它... –

+0

@EvanZamir取決於你的情況。如果這個視圖是特定的,比views.py更好。如果它是某些業務邏輯的一部分,則可能需要將其放入模型方法中。 –

0

我結束了使用to_representationserializers.py解決這個問題:

from google.cloud.storage import Blob 
client = storage.Client() 
bucket = client.get_bucket('myBucket') 

    def to_representation(self, value): 
     try: 
      blob = Blob(name=value.name, bucket=bucket) 
      signed_url = blob.generate_signed_url(expiration=datetime.timedelta(minutes=5)) 
      return signed_url 
     except ValueError as e: 
      print(e) 
      return value 
相關問題