問題タブ [django-storage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Djangoストレージs3メディアのURLはhttp://ではなくhttps://です
django-storage s3でメディアを提供する場合、生成されるメディアURLは次のようになります。
httpsが原因で画像が表示されない原因:
画像をHTTPSではなくHTTPとして提供する必要があります
私の設定は次のとおりです。
media_urlとs3_urlを通常のhttpに設定しようとしましたが、何も変更されませんでした。
django1.5を使用しています
django - s3-boto を使用した django-storage がブラウザのキャッシュを壊す
s3-boto で django-storage を使用する django プロジェクトがあります。
問題は、呼び出しごとに URL が変更されるため、S3 にあるすべてのファイルをキャッシュできないことです。
django-storage によって生成される 2 つの呼び出しを次に示します。
ご覧のとおり、署名が異なります。ブラウザのキャッシュが壊れないようにするにはどうすればよいですか?
django - 先頭のスラッシュでDjango FileFieldを保存する
2 つの異なるシステムで使用されるデータベースがあり、その結果、次のように FileField 値の先頭にスラッシュを付ける必要があります。
ただし、Django では、FileField の値の先頭にスラッシュを付けることができませんMEDIA_ROOT
。
したがって、私の疑いは、カスタム ストレージ クラスを作成するか、FileField を何らかの方法でカスタマイズして、読み取り時に先頭のスラッシュが取り除かれ、保存時に復元されるようにする必要があるということです。
なぜ私がこれを行っているのか疑問に思っている人のために: 別の非Djangoサーバーにファイルをミラーリングしています。
Django サーバーでは、ファイルはメディア ルートに相対的です。したがって、メディア ルートが/path/to/myapp/media
であると仮定すると、パスを持つファイルdirs/filename.ext
は に存在し/path/to/myapp/media/dirs/filename.ext
ます。
一方、他のサーバーにミラーリングされると、それらは webroot に対して相対的に保存されます。したがって、パスはファイルの絶対 URL と同じです (たとえば、ファイルdirs/filename.ext
は に保存され/path/to/example.com/dirs/filename.ext
、 としてアクセスされますhttp://example.com/dirs/filename.ext
)。
両方のサーバーが同じデータベースを使用しています。
ある解決策は、他のサーバーでフィールドが使用されているすべての場所にスラッシュを追加していることに気付きましたが、それはさまざまなソースファイルにまたがっていますが、Django ではレコードモデルのおかげで、ファイルだけを変更できるはずmodels.py
です。 Django サイト全体で機能します。
これまでのところ、のカスタムバージョンを作成しようとしましたが、ルックアップと保存をFileField
正しく前に追加しましたが、Django アプリ内で使用すると先頭のスラッシュを削除できません。/
例
マニュアル用の PDF ファイルを含む Tool というレコードを想像してみてください。Django サーバーでは、次のようにテンプレートに表示されます。
一方、他のサーバーでは、次のようになります (これは CF コードです)。
2 番目のサーバーの例では、絶対 URL である必要があります。
したがって、明確にするために:
- 2 番目のサーバーは Django プロジェクトではありません
- 最初のサーバーよりも 2 番目のサーバーでコードを変更すると、はるかに時間がかかります。
- したがって、FileField の値は、Django との互換性を保つために絶対 URL である必要がありますが、2 番目のサーバーとの互換性を保つには、先頭にスラッシュを付けて保存する必要があります。
django - boto/django-storages と amazon s3 を使用している場合に画像からサムネイルを生成する際の問題
ここにある要点https://gist.github.com/valberg/2429288を使用して、保存時にサムネイルを生成しています。ローカルでは動作しますが、AttributeError が発生する本番環境では動作しません:
これを 100 通りの方法でいじりました。 image.seek(0) または suf.seek(0) または temp_handle.seek(0) を考えられるほぼすべての場所に追加しましたが、何も機能しません。
acl - pirvate ACLを使用したbotoを使用したdjangoストレージは、保存時に404をスローします
botoでdjango-storagesを使用しています。ストレージがモデルでパブリックとして S3 ファイルのアップロードを処理できるようにすると、すべてが正常に機能します。ただし、保存/更新時に ACL をプライベートに設定すると、このエラー メッセージが表示されます
これは、レコードの追加/更新時に発生します。
これは、FileFIeld があるモデルの保存部分です。ACL をプライベートに設定するようにオーバーライドします。
ただし、ファイルはすべて正常に保存されます。それはいまいましいエラーです。
python - Django runserver、および s3boto バックエンド
Django の「manage.py runserver」には、実行中に変更された CSS、JS、および画像ファイルを魔法のように収集する素晴らしい機能があります。これにより、フロントエンド開発 (特に css) を行う際に、変更の保存と再読み込みのサイクルが非常に高速になります。素晴らしいです。
しかし、最近 Heroku に移行し、静的ファイルを処理するために s3boto で django-storages をインストールしました。それも素晴らしく機能します。ただし、「manage.py runserver」は、更新されたファイルを自動的に表示しなくなりました。そのためには「manage.py collectstatic」を実行する必要があります -- これは機能しますが、余分なステップが追加され、collectstatic ステップが S3 にファイルをアップロードするのを待つ間、開発が遅くなります。
django-storages を維持しながら、runserver の古い動作を元に戻す方法はありますか?