4

クライアント向けに、アプリフックを介して Aldryn ブログを使用する Django CMS プロジェクトを開発しています。Heroku にデプロイしようとしています。Heroku のエフェメラル ファイル システムのため、メディアは外部でホストする必要があります。現在、唯一のメディアは、Django CMS 画像プラグイン (標準の ImageField を使用) と Aldryn ブログの投稿 (FilerImageField と easy_thumbnails を使用) で構成されています。

Boto を使用して S3 に保存することについて読んだことがありますが、これは新しい DEFAULT_FILE_STORAGE (および THUMBNAIL_DEFAULT_STORAGE) を設定するのと同じくらい簡単なようです。これは素晴らしいソリューションのように思えますが、他のすべて (Web サーバー、検索エンジン、データベース) は Heroku とそのアドオンによって提供されます。クライアントがサインオフしたら、Heroku の所有権を単純に譲渡したいと思います。

これにより、Cloudinary を Heroku アドオンとして使用することを検討するようになりましたが、統合について混乱しています。単純に DEFAULT_FILE_STORAGE を変更するのではなく、ImageFields と FileImageFields を CloudinaryFields に変更して、Filer と easy_thumbnail の機能を失う (または何らかの方法でモンキー パッチを適用する必要がある) 必要がありますか?

Boto を選択してクライアントのクレジット カードを Heroku と S3 の両方に接続するか、Cloudinary を選択して大まかな統合を行うかのどちらかのようです。より良い解決策がありませんか?

4

2 に答える 2

3

必ずしもより良い解決策を見逃しているわけではありません。Heroku の問題は、数 MB を超えるものをアップロードしたい場合、またはもっと重要なことに、潜在的に低速な接続でアップロードしたい場合、ハード タイムアウトが発生することです。これは、Django が最初にファイルをフォームに投稿され、Heroku dyno を介してクラウド ストレージ プロバイダーにアップロードされます。

通常は、AWS アカウントを使用してクライアントをセットアップして、S3 と CloudFront を取得してからs3directを使用することをお勧めします。残念ながら、これにはImageFieldおよびその他の潜在的に大きなFileFieldをに変更する必要がS3DirectFieldあり、URL 全体がファイル (S3 または CloudFront のいずれか) に保存されます。これにより、モデル管理者に各フィールドの AJAX 対応アップローダーが提供されます。すべての画像がアップロードされた後に「送信」をクリックする限り、うまく機能します。

私は自分のポッドキャスト ネットワーク サイトで使用しています。その性質上、アップロードに少し時間がかかるファイルを処理する必要があるからです。フィールドごとに必要なファイルタイプのみを受け入れるようにS3Directを微調整することができます-そして実際に調整する必要があります-これはsettings.pyファイルで行います-しかし、それはかなりうまく機能し、ユーザーにプログレスバーを提供します.

これが Django CMS とどのように統合されるのかはわかりませんが、管理者用のスーツ スキンで使用しましたが、問題はありませんでした。

それが役立つことを願っています。

于 2015-10-15T21:34:23.220 に答える