2017-09-21 8 views
0

私はPythonとFlaskを使って簡単なインタラクションWebアプリケーションを作成しています。 Chromeを使用してlocalhost:5000でテストする。Flaskの間に相対パスを使用してJavascriptファイルが見つかりませんでした。render_template

私は、1つのテンプレートと1つの関連付けられたJavaScriptファイルに配置されています: ./templates/main.html ./templates/main_scripts.js

main.htmlをテンプレートは、スクリプトは、このようなファイルが含まれます。

<script src="main_scripts.js"></script> 

私はこのPythonコードを使用してテンプレートをレンダリング...

return render_template('main.html', session_id=session_id, title=sess.title) 

main.htmlをページですレンダリングされたが、私はクロームコンソールでこのエラーを取得:

Failed to load resource: the server responded with a status of 404 (NOT FOUND) 

unfound「main_scripts.js」エラーが発生した場合、ブラウザはそれからそれをロードしようとしていると考えるの場所を点検するためにクロームコンソールを使用します私の仮想環境内では、

./env/Scripts/main_scripts.js 

...であり、テンプレートと同じディレクトリからではありません。

レンダリングされたテンプレートがスクリプトファイルの場所を理解できないようです。これまで私は "./main_scripts.js"や "/appdir/main_scripts.js"のようなsrcパスを全く同じ結果を試してきました。あなたがここに、テンプレートfloderとのjs subfloderと同じレベルで静的floderを作成する必要があり、そのfloderでJSを入れて、あなたのhtmlでこのようにそれを呼び出す

+0

使用 '<スクリプトSRC =" {{なurl_for( '静的'、ファイル名=」 main_scripts.js ')}} ">'、あなたがサブルートにいるとき(すなわち: '/ user/info ')、相対パスは異なります。 – T4rk1n

答えて

1

はニシキヘビの方法はそれを行うです:

<script src="{{ url_for('static', filename="js/main_scripts.js")}}"></script> 

は、アプリケーション構造に関するフラスコの公式ドキュメントでhereを説明するように、プロジェクトの構造は次のようにする必要があります:

/yourapplication 
    yourapplication.py 
    /static 
     /css 
      style.css 
     /js 
      main_scripts.js 
    /templates 
     main.html 
     ... 
+0

時間をかけて答えを出して、大きなリファレンスソースにリンクしてくれてありがとうございました。私はこの答えのためにしばらく調べましたが、間違った言葉を使っていたと思います。 – vbsql7

関連する問題