2017-08-14 24 views
0

API用のdjango-rest-frameworkと、ストレージエンジン用のdjango-storageを使って、かなり単純な写真アプリを書いています。フロントエンドはVue.jsで書かれています。私はアップロードの部分が働いている、そして今私は写真を提供しようとしている。ブラウザがGCSから画像を読み込もうとすると、今や明らかになっているように、私は403の禁じられたエラーをたくさん取得します。私はこれについていくつか読んで、私の場合のベストプラクティスは、ある時間内に期限が切れる署名付きのURLを生成することになると思われます。私はこれのためのパッケージを見つけることができませんでした、これは私が望んでいたものです。それを除いて、私はDjangoでこれをどうやって行うのかが分かりません。また、Google Cloud Storageリソースの署名付きURLを作成するためのDjangoパッケージはありますか?

pip install google-cloud-storage 

を、あなたがより多くのものを必要とするようAPI Documentationを参照してください:

答えて

2

はい、google-cloud-storage

インストールを見てみましょう。

希望すると助かります!

+0

私は私が必要とする正確に何であるそこに呼ばれる 'generate_signed_url'、内の関数を発見しました。あなたはこれをDjango-Rest-Frameworkアプリケーションで使用することをお勧めしますか?私は 'views.py'でそれを使うことを考えています... –

+0

@EvanZamirはあなたのケースに依存します。ビュー固有のものであれば、それはviews.pyです。それがビジネスロジックの一部であれば、それをモデルメソッドの中に入れたいかもしれません。 –

0

私はserializers.pyto_representationを使用してこの問題を解決することになった:

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 
関連する問題