私はDjango Webアプリケーションを持っており、フロントエンドにはReactJSを使用しています。私のアプリケーションは、私がローカルで開発しているとき(音楽ファイルを含むフォルダ)、そしてプロダクション(サーバ上のファイルシステム)でローカル音楽ファイルを取得したいと思っています。どちらも異なるパスを持つので、私はdevとprodの設定が異なります。ReactJSフロントエンドからのDjango MEDIA_URLとMEDIA_ROOTの設定値へのアクセス
私は "音楽は" ファイルを含む私のフォルダです
MEDIA_ROOT = os.path.join(BASE_DIR, 'music') # on dev env
MEDIA_URL = '/media/'
を設定します。
私はurls.pyに
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
を追加しましたが、ReactJsはそれだけで文字列としてその変数を処理すると、私は
<audio src={"{{ MEDIA_ROOT }}" + props.audio}></audio>
ここで、props.audioはファイルへのパスです。
「私はまた私のsettings.pyでテンプレートへ
django.core.context_processors.media
を追加しましたが、私は、URLを入力するとき、それはまだ、しかし
動作しないのはlocalhost:8000 /メディア/パス/ to/music.wav '、私はファイルを見ることができます。
私のjavascriptからMEDIA_URLとMEDIA_ROOTの値を取得する方法に関するアイデアはありますか?またはコンポーネントをレンダリングするたびにそれらの値を取得するために私のDjangoバックエンドを呼び出す必要がありますか?
は、それがアプローチするための最良の方法だろうそれ?ファイルのモデルを作成しますか? – user3226932
@ user3226932あなたはprops.audioとは何かを見せたり、どうやってテンプレートに渡したりできますか?問題は、この '{" {{MEDIA_ROOT}} "+ props.audio}をURLとして解析することができないということです。ビューで文字列の連結を行い、結果をテンプレートに渡すことはできますか? – neverwalkaloner
私はそれが問題だと思います。私はDjangoのテンプレートに渡していない、私は、私はそれらの値を取得するためにバックエンドにdjangoを呼び出す必要があると思うどちらかの方法、Djangoではなく、ビューをレンダリングするReactJSを使用していますか? – user3226932