2016-11-29 2 views
0

オーディオwavファイルへのアクセスが必要なDjango Webアプリケーションがあります。 Webアプリケーションファイルを格納するWebサーバーにマウントされたwavファイルを含むファイルサーバーがあります。私はローカルファイルシステムにファイルをダウンロードして、Webアプリケーションがローカルで開発しているときにアクセスできるようにしました。マウントされたファイルシステムからのファイルへのアクセスとWebサーバー(プロダクションvs dev)のローカルファイルとの比較

私の質問は、プロダクションとローカルのWebアプリケーションからこれらのファイルにアクセスする方法です。私は自分のJavascriptで私のWebアプリケーションが生産または開発にあるかどうかをチェックする2つの異なる設定が必要だと思っています。本番環境では、マウントされたファイルサーバーへのパスを使用し、開発中の場合は、自分のコンピューター上のローカルファイルシステムへのパスを使用します。 DjangoやJavascriptは何とかその方法を提供していますか?そして、これは、Webアプリケーションからファイルを取得するアプローチに適していますか?

その他のオプション私はWebアプリケーションと共にwavファイルをWebサーバーにアップロードするだけで、プロダクションでローカルにアクセスでき、マウントされたファイルシステムからアクセスする必要はありませんが、私はそうではありませんこれがパフォーマンスにどのような影響を与え、録音が追加または削除されるたびにファイルをアップロードしなければならないかの頭痛を引き起こす可能性があります。

このアプローチはより良いのでしょうか、あるいは最初のアプローチはより良いでしょうか?

+0

実際には.wavファイルの内容をPythonコードでロードしていますか?それともクライアントに提供していますか? –

+0

実際には、ユーザーがオーディオファイルを再生できるように、javascript(フロントエンド)またはpython(バックエンド)の.wavファイルの内容をロードします。 – user3226932

答えて

0

あなたの目標は、ユーザーがWebアプリケーションを使用しているときにオーディオファイルを聴くことができることです。これはDjango固有のものではありません。

あなたのDjangoプロジェクトは、オーディオファイルが提供される場所を指すような設定、たとえばsettings.AUDIO_FILES_URLを設定することをお勧めします。コンテキストプロセッサを使用して、その設定をテンプレートレンダリングコンテキストにAUDIO_FILES_URLとして追加するか、明示的に行うことができます。変数の値に後ろにスラッシュを付けるのが良い方法です(これはSTATIC_URLが通常どのように使用されるかです)。テストまたはプロダクションの各設定ファイルに値を正しく設定します。

HTMLテンプレートでは、特定のオーディオファイルのURLを作成できます。

<span data-audio-file-url="{{ AUDIO_FILES_URL }}{{ audio_file_path }}">{{ audio_file_description }}</span>

最後に、JavaScriptコードがURLを読んで、あなたが好きなインターフェイスを作成することができます:あなたはこのような何かを行う可能性があります。 JavaScriptが本番システムかどうかを知る必要はありません。

生産時には、DjangoはオーディオファイルのベースURLのみを知っている必要があります。ではなく、がサービスに含まれている必要があります。それらのサービスは、Apache、Nginxなど、Webサーバーを構成するために必要なものです。ファイルサーバーを別のホストから提供することもできます。おそらく、ファイルサーバーを静的なファイルWebサーバーにすることもできます。

また、ユーザーには.wavの代わりに.mp3を提供することが親切だと思います!

+0

HTMLまたはJavaScriptからDjango設定変数にどのようにアクセスできますか? – user3226932

+0

urls.pyにu​​rlpatterns + = static(settings.MEDIA_URL、document_root = settings.MEDIA_ROOT) を追加しましたが、reactjsは

+0

django.core.context_processors.mediaを自分のsettings.pyテンプレートに追加しましたが、それでも動作しません – user3226932

関連する問題