2017-10-11 6 views
0

플라스크 (Flask)와 자바 스크립트로 자동 완성을 구현 중이며 자바 스크립트를 다른 파일에 넣으려고합니다. 내가 추가하는 경우아약스에서 정적 파일을 호출하는 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를 사용할 수 있습니다

+0

와 파일에 링크와 같은 : app.route (@'/ 자동 완성 ', 방법 = ['GET ']). 저는 js를 파이썬에서 호출하지는 않지만 반대쪽에서 호출합니다. –

+0

두 복사본을 신중하게 읽으십시오. 이것은 확실히 중복입니다. 정적 파일은 렌더링되지 않습니다. 'url_for'와 같은 것을 렌더링하고 싶다면 템플릿이 필요합니다. 대답은 – davidism

답변

1

당신은 당신이 여기에서 필요로하는 무슨을 찾아 낼 것이다 /autocomplete.js ') 또는 직접 파이썬 코드는 선이 http://example.com/static/js/autocomplete.js

+0

Tnx이지만 파이썬 코드에서 js를 호출하는 예입니다. 내가 js에서 파이썬 메서드를 호출하고 싶습니다. –

+0

자바 스크립트 내에서 파이썬 메소드를 호출 할 수 없습니다. 플라스크에서 URL을 호출하려면이 URL에 대한 경로를 만들어 해당 경로로 호출해야합니다. – Gui

+0

죄송합니다. 오해의 소지가 있습니다. 으로 위의 javascript를 index.html에 넣으면 완벽하게 작동합니다. 그러나 스크립트를 /static/js/autocomplete.js 및 index.html의 개별 파일에 넣으면 을 사용하면 404가 반환됩니다. 경로 자동 완성을 찾을 수 없습니다. ... –

2
{{ url_for('static', filename='js/autocomplete') }}