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

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을 생성 하는 데 어떻게 사용 합니까?



답변

기본적으로 정적 파일에 대한 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문서를보십시오 .


답변

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

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

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

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


답변