2014-02-23 2 views
1

웹 페이지의 업 로더에 대해 몇 가지 자바 스크립트를 사용하여 테스트했습니다. HTML로 인라인으로 작성했습니다 (알고 있습니다). 이것이 내에서 참조 될 수 있기 때문에 Jinja2 내 파이썬에서 업로드 기능 (그냥 폼 같은 역할) 내 업 로더를 연결하기 위해 템플릿과 내가 플라스크를 사용하고, 난 그냥, 인라인 자바 스크립트에외부 JS 파일에서 Python 함수를 호출하는 방법은 무엇입니까?

url: "{{url_for('upload_file')}}", 

했다 템플릿의 범위. 지금은 외부 파일에 내 JS를 이동 한하고 너무 같은 HTML에 포함 :

<script type="text/javascript" src="{{ url_for('static', filename='uploader.js') }}"> 
    </script> 

가 어떻게 파일을 외부 JS에서 내 파이썬 함수를 호출 할 수 있습니다? 템플릿에 그것을 초기화하고 전달하는 몇 가지 방법이 있습니까, 아니면 여기에 정말 초보적인 것을 놓치고 있습니까?

편집 : 당신이 말하는 것처럼

<script> 
var link = "{{ url_for('upload_file') }}" 
</script> 
<script type="text/javascript" src="{{ url_for('static', filename='uploader.js') }}"> 
</script> 

답변

0

, 당신은 주 파일에서이 작업을 수행 할 필요가 : 나는 조금 다른 그 일을 결국. 스크립트 태그 내에서 전역 범위에서 객체를 정의하고 속성을 템플릿 호출의 결과로 설정할 수 있습니다. 그런 다음 스크립트 파일의 개체를 참조 할 수 있습니다.

편집

특별한 구문은 없습니다 :이 자바 스크립트 단지 표준입니다.

<script type="text/javascript"> 
    template_vars = { 
     url: "{{url_for('upload_file')}}", 
     // etc 
    } 
</script> 

지금은 다른 스크립트에 액세스 할 수 있습니다 template_vars.url

+0

이 구문은 무엇입니까? 죄송합니다. 저는이 유형의 초보자입니다. 고맙습니다. –

+0

감사합니다. 내 편집에서 볼 수있는 것처럼 조금 다르게했습니다. 내가했던 방식대로 이런 식으로하는 것에 어떤 이점이 있습니까? –

+0

템플릿에서 전달할 변수가 많은 경우에만 전역 이름 공간을 하나의 내부에 두어 전체 이름을 추가하여 오염시키는 것을 방지 할 수 있습니다. –

관련 문제