it-swarm.dev

flask 이미지 파일을 어디에서 찾습니까?

플라스크를 사용하여 로컬 서버를 설정하고 있습니다. 내가하고 싶은 것은 index.html 페이지에서 img 태그를 사용하여 이미지를 표시하는 것입니다. 그러나 나는 계속 error

GET http://localhost:5000/
ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg 404 (NOT FOUND)  

flask 어디에서 파일을 찾습니까? 약간의 도움이 될 것입니다. 내 HTML 코드는

<html>
  <head>

  </head>
  <body>
    <h1>Hi Lionel Messi</h1>

  <img src= "ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg ">

  </body>

</html>

내 python 코드는 다음과 같습니다.

@app.route('/index', methods=['GET', 'POST'])
def lionel(): 
    return app.send_static_file('index.html')
42
Aritra Biswas

이미지 파일 ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg가 static 디렉토리에 있습니까? 정적 디렉토리로 옮기고 HTML을 다음과 같이 업데이트하면 :

<img src="/static/ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg">

작동해야합니다.

또한, 이것을 구성하는 더 좋은 방법이 있습니다.

파일 구조 :

app.py
static
   |----ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg
templates
   |----index.html

app.py

from flask import Flask, render_template, url_for
app = Flask(__name__)

@app.route('/index', methods=['GET', 'POST'])
def lionel(): 
    return render_template('index.html')

if __== '__main__':
    app.run()

templates/index.html

<html>
  <head>

  </head>
  <body>
    <h1>Hi Lionel Messi</h1>

  <img src="{{url_for('static', filename='ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg')}}" />

  </body>

</html>

이 방법을 사용하면 정적 자산의 URL 경로를 하드 코딩하지 않아도됩니다.

53
Matt Healy

이미지가 실제로 존재하는 절대 경로를 사용하십시오 (예 : '/home/artitra/pictures/filename.jpg'

또는 프로젝트 디렉토리 안에 다음과 같이 정적 폴더를 만듭니다.

| templates
   - static/
         - images/
              - yourimagename.jpg

그런 다음이 작업을 수행

app = Flask(__name__, static_url_path='/static')

index.html에서 다음과 같이 이미지에 액세스 할 수 있습니다.

src ="/static/images/yourimage.jpg" 

img 태그에서

17
Balaji

documentation 에서 :

동적 웹 애플리케이션에는 정적 파일도 필요합니다. 일반적으로 CSS 및 JavaScript 파일이 제공됩니다. 이상적으로 웹 서버는 당신을 위해 그들을 제공하도록 구성되어 있지만 개발 중에 Flask 그렇게 할 수도 있습니다. 패키지 또는 모듈 옆에 static이라는 폴더를 만드십시오. /static 응용 프로그램에서.

정적 파일의 URL을 생성하려면 특수 'static' 엔드 포인트 이름 :

url_for('static', filename='style.css')

파일은 파일 시스템에 static/style.css.

7
Burhan Khalid

이것을 알아내는 데 시간이 걸렸습니다. Flask에서 _url_for_)는 _routes.py_ 스크립트에서 지정한 엔드 포인트를 찾습니다.

따라서 _routes.py_ 파일에 @blah.route('/folder.subfolder')과 같은 데코레이터가 있으면 Flask는 {{ url_for('folder.subfolder') , filename = "some_image.jpg" }} 명령을 인식합니다. _'folder.subfolder'_ 인수는이를 인식하는 Flask 끝점)으로 보냅니다.

그러나 이미지 파일 _some_image.jpg_을 하위 폴더에 저장했지만 BUT이이 하위 폴더를 flask _routes.py_, 라우트 데코레이터는 @blah.routes('/folder')처럼 보입니다. 그런 다음 이미지 파일을 다음과 같이 요청해야합니다. {{ url_for('folder'), filename = 'subfolder/some_image.jpg' }}

I.E. Flask는 "folder"라고하는 엔드 포인트로 가서 서브 디렉토리 경로를 filename 인수에 넣어서 지시합니다.

3
pelon