Flask 페이지가 완벽하게 렌더링되더라도 프로젝트에 favicon link가 없으면 브라우저 탭이 비어 보일 수 있습니다. 가장 깔끔한 flask favicon 설정은 icon을 Flask의 static 디렉터리에 저장한 뒤 공통 Jinja template에서 연결하는 것입니다.

시작하기 전에 무엇이 필요할까요?

flask favicon을 추가하는 다섯 단계

  1. 1. static 디렉터리에 icon 배치

    다음 folder가 없다면 생성한 뒤 file을 이 위치에 넣으세요:

    myapp/
    ├── app.py
    ├── static/
    │   └── favicon.ico
    └── templates/
        └── base.html

    PNG를 favicon.ico로 이름만 바꾸지 마세요. 실제 ICO를 사용하세요. PNG 및 SVG link 형식은 HTML favicon 가이드에서 확인하세요.

  2. 2. base template에 link 추가

    HTML Standard은 외부 icon resource를 가리키는 rel='icon' link를 정의합니다. templates/base.html의 기존 <head> 안에 다음 block을 추가하세요:

    {% block head %}
      <link rel='icon' href='{{ url_for('static', filename='favicon.ico') }}'>
    {% endblock %}

    url_for를 사용하면 app에서 URL prefix나 custom static path를 사용할 때 hard-coded path를 피할 수 있습니다.

  3. 3. 각 페이지가 이를 상속하도록 설정

    각 페이지에서 base template을 extends하세요. head block의 이름이 다르다면 아래 코드에서 그 이름으로 바꾸세요:

    {% extends 'base.html' %}
    {% block head %}
      {{ super() }}
    {% endblock %}

    super() 호출은 favicon을 유지하면서 각 페이지에서 head content를 추가할 수 있도록 합니다.

  4. 4. 실행하고 response 확인

    개발 server를 시작하고 icon URL을 직접 열어 확인하세요:

    flask --app app run --debug
    # Open http://127.0.0.1:5000/static/favicon.ico

    직접 요청한 URL은 icon을 반환해야 하며 HTML이나 404가 반환되면 안 됩니다. 렌더링된 <head>를 살펴보고 url_for가 생성한 rel='icon' link가 포함되어 있는지 확인하세요.

  5. 5. 안정적인 public URL로 배포

    production에서는 static/favicon.ico를 application route를 통해 제공하지 말고 static asset으로 제공하세요. filename은 안정적으로 유지하세요. 기존 icon을 교체할 때는 favicon-v2.ico를 사용하고, 오래된 cached copy가 남지 않도록 template도 업데이트하세요.

자주 발생하는 문제는 무엇인가요?

Flask favicon 설정은 언제 완료되나요?

아이콘의 직접 URL에서 파일이 반환되고 모든 페이지가 rel='icon' 선언을 상속하면 설정이 완료됩니다. 원본 아트워크가 필요하다면 Mzu favicondl을 이용해 Flask에 추가하기 전에 favicon 파일을 준비할 수 있습니다.