2016-09-13 8 views
0

私はPythonanywhere.comのDjangoにウェブサイトを構築しており、BackblazeのB2クラウドストレージを使用してすべての静的ファイルとメディアファイルを保存しています。 Backblazeにアップロードした私のCSSと画像は機能していますが、どのようにすべてのものが合うべきかを理解することができませんので、ここで私はどこですか(最小限):DjangoはAPIを使用してcdnに画像をアップロードします

このモデルでは、アップロードするためのフォームがあります。

class Post(models.Model): 
    (...) 
    thumbnail = models.ImageField(null=True, blank=True, width_field="width_field", height_field="height_field") 
    (...) 

Backblazeのは、私は必要なHTTPリクエストとレスポンスのためのすべてのコードを持っているので、私はちょうど別々のファイルにすることを貼り付けました。まず、アカウントの認証トークンを取得してから、アップロードURLを取得してからファイルを送信する必要があります。

このように、関数全体には、ファイルの日付、ファイル名、ファイルサイズという3つのものが必要です。出力として、私はファイルID(および他のもの、詳細here)を取得します。

ここで、私はそのアップロード関数をどこで呼び出す必要があるのだろうか、それはImageFieldの "upload_to"パラメータと関係があると思います。 ImageFieldにファイルが見つかる場所を教えていないので、ImageFieldに実際に何が格納されているのだろうか。設定ファイル内のメディアルートを使用していますが、どうすればこれを管理できますか?

+0

イメージをディスクにPythonAnywhereで保存するのではなく、代わりにバックブレイズに保存したいとお考えですか?あなたのユーザーが送信する画像はありますか?または、今すぐ表示したい画像をプリロードしましたか? – conrad

+0

正解、BackblazeをCDNとして使いたいです。私は画像とCSS/JavaScriptファイルをpreuploadedしている、私はそれらの仕事を得た。今私は実際にユーザーに画像をアップロードしてそこに保存させたいと思っています。 – Bob

+0

Django-storageをチェックしてください。ほとんどのストレージバックエンドをサポートしています(バックブレーズはサポートしていません)。バックエンドのために読み書き/クローズ/サイズメソッドを実装する必要があるようで、あなたは良いです。プルリクエストを提出して、上流にマージするようにすることもできます。 – conrad

答えて

0

設定でこれらのコマンドを使用すると、MEDIA_URLとイメージを保存する場所を設定できます。ここでは画像はあなたがupload_toがupload_toがNoneに設定されている場合、それは、media_cdn内の画像を保存します他media_cdn内の画像を保存する必要があり、パスを伝える必要がありSRC/media_cdn

MEDIA_URL = "/media/" 
MEDIA_ROOT = os.path.join(BASE_DIR, "media_cdn") 

に格納されます。

models.ImageField(upload_to='profiles/') 

画像をアップロードする必要があります。それで、それはイメージが存在するアドレスを含んでいる。

+0

しかし、私はちょうどDjangoがBackblazeのファイルパスに画像を保存することはできないと信じています。私はその権利のためにAPIを使用する必要がありますか? – Bob

+0

私はあなたがそこにあなたのワークスペースを持っていると思うし、heroku、アマゾン、紺碧などがその中に何かをすることができます。あなたがそうすることができない場合はまだgithubリポジトリを持っている。あなたを助けたいんです。 – jainaman224

関連する問題