私は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に実際に何が格納されているのだろうか。設定ファイル内のメディアルートを使用していますが、どうすればこれを管理できますか?
イメージをディスクにPythonAnywhereで保存するのではなく、代わりにバックブレイズに保存したいとお考えですか?あなたのユーザーが送信する画像はありますか?または、今すぐ表示したい画像をプリロードしましたか? – conrad
正解、BackblazeをCDNとして使いたいです。私は画像とCSS/JavaScriptファイルをpreuploadedしている、私はそれらの仕事を得た。今私は実際にユーザーに画像をアップロードしてそこに保存させたいと思っています。 – Bob
Django-storageをチェックしてください。ほとんどのストレージバックエンドをサポートしています(バックブレーズはサポートしていません)。バックエンドのために読み書き/クローズ/サイズメソッドを実装する必要があるようで、あなたは良いです。プルリクエストを提出して、上流にマージするようにすることもできます。 – conrad