url_for를 사용하여 Flask 정적 파일에 연결


91

url_forFlask에서 폴더의 파일을 참조하는 방법은 무엇입니까? 예를 들어, static폴더 에 일부 정적 파일이 있으며 그중 일부는 static/bootstrap.

에서 파일을 제공하려고 static/bootstrap하면 오류가 발생합니다.

 <link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}">

이것으로 하위 폴더에없는 파일을 참조 할 수 있습니다.

 <link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}">

정적 파일을 참조하는 올바른 방법은 무엇입니까 url_for? url_for모든 수준에서 정적 파일에 대한 URL을 생성 하는 데 어떻게 사용 합니까?

답변:


182

기본적으로 정적 파일에 대한 static엔드 포인트 가 있습니다. 또한 Flask응용 프로그램에는 다음 인수가 있습니다.

static_url_path: 웹에서 정적 파일에 대해 다른 경로를 지정하는 데 사용할 수 있습니다. 기본값은 static_folder폴더 이름입니다 .

static_folder:에서 제공되어야하는 정적 파일이있는 폴더입니다 static_url_path. 기본값은 응용 프로그램의 루트 경로에있는 'static'폴더입니다.

이는 filename인수가 파일에 대한 상대 경로를 가져와 다음 static_folder과 결합 된 상대 경로로 변환 함을 의미합니다 static_url_default.

url_for('static', filename='path/to/file')

파일 경로 static_folder/path/to/file를에서 URL 경로 로 변환합니다 static_url_default/path/to/file.

따라서 static/bootstrap폴더 에서 파일을 가져 오려면 다음 코드를 사용하십시오.

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap/bootstrap.min.css') }}">

다음으로 변환됩니다 (기본 설정 사용) :

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css">

또한 url_for문서를보십시오 .


참고 Flask의 URL 규칙을 추가 staticA의 이러한 속성을 변경 있도록 초기화시 엔드 포인트 Flask인스턴스를하면 변경되지 않습니다 url_for('static', ...)결과입니다. 초기화 후 정적 엔드 포인트를 변경하려면 gist.github.com/brycepg/593ffb5ce9316d2871c7f24f9de34c24
Bryce Guinta

1

제 경우에는 nginx 구성 파일에 대한 특별한 지침이 있습니다.

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
            try_files $uri =404;
    }

nginx는 Flask에 대해 알려지지 않았기 때문에 모든 클라이언트가 '404'를 받았습니다.

누군가에게 도움이되기를 바랍니다.


기본 구성 파일은 /etc/nginx/nginx.conf(Linux)입니다. 그것은 윈도우에 유사한 경로 (정말 모르겠다) 될 수있다
앤드류는 성장

이것은 서버 측 구성입니다. 데스크톱에서 앱을 개발하는 중이라면 아마도 필요하지 않았을 것입니다.
adamczi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.