私はFlaskとJavaScriptでオートコンプリートを実装しています。JavaScriptを別のファイルに入れようとしています。マイフォルダ構造は次のようである:ajaxで静的ファイルを呼び出すurl_for()
- Project
- static
| -js
| autocomplete.js
- templates
| index.html
main.py
私はindex.html
でスクリプトを追加する場合:
<script>
$(function() {
$.ajax({
url: '{{ url_for("autocomplete") }}'
}).done(function (data) {
$('#inputBox').autocomplete({
source: data,
minLength: 1
});
});
});
</script>
それは正常に動作しますが、私は/static/js/autocomplete.js
にコードを置くときとindex.html
で<script src="../static/js/autocomplete.js"></script>
を追加し、 私を得ます404:
127.0.0.1 - - [11/Oct/2017 07:54:10] "GET /%7B%7B%20url_for(%22static%22,%22autocomplete%22)%20%7D%7D HTTP/1.1" 404 -
したがって、パスをどのように書く必要がありますかurl_for()
? http://flask.pocoo.org/docs/quickstart/#static-files
は基本的にあなたがちょうどあなたのパッケージのルートに「静的」フォルダを必要とし、その後はなurl_for(「静的」、ファイル名=の 'がJSを使用することができます。
であなたのファイルへのリンクのように:app.route(@' /オートコンプリート」、メソッド= [ 'GET'])。私はPythonからjsを呼び出すのではなく、反対に。 –
両方の重複を慎重に読んでください。これは間違いなく重複しています。静的ファイルはレンダリングされません。 'url_for'のようなものをレンダリングするには、テンプレートが必要です。答えは – davidism