2022년 2월 27일 일요일

flask에 favicon 추가하기

favicon이란 탭이나 북마크를 구별하기 위해 사용하는 브라우저에서 사용되는 아이콘이다.

기본적으로는 16*16의 icon 파일을 기본으로 하고 있지만 일부 브라우저 파일에서 png 파일도 지원하고 있습니다.


favicon 만들기

windows에서 ico파일을 편집할 수 없기때문에 검색해서 만들수 있는 site에서 만들면 됩니다. 

https://favicon.io/ 에서 텍스트를 이용해서 간단하게 만들었습니다.


flask에서 넣기 참고 링크

https://flask-docs-kr.readthedocs.io/ko/latest/patterns/favicon.html


html에 설정하기

<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">


소스파일에 추가하기

방법1

app.add_url_rule('/favicon.ico',
                 redirect_to=url_for('static', filename='favicon.ico'))

어플리케이션에 루트에 있어야 한다고 하는데... 막상 해보면 방법1은 잘안됩니다. 


방법2

import os
from flask import send_from_directory

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os
from flask import send_from_directory
from flask import Flask
from flask import request
from flask import render_template
from flask import jsonify

app = Flask(__name__)

@app.route("/")
def index():
	return render_template('input_form.html')

@app.route('/favicon.ico')
def favicon():
	return send_from_directory(os.path.join(app.root_path, 'static'),'favicon.ico', mimetype='image/vnd.microsoft.icon')

@app.route("/ajax_page", methods=['POST'])
def ajax_page():
	data = request.get_json()
	print(data)
	calc_result = calc(data['inputdata'])
	rdata = {}
	rdata['inputdata']=data['inputdata']
	rdata['rlt']=calc_result
	print(rdata)
	return jsonify(rdata)

def calc(inputdata):
	return str(eval(inputdata))

if __name__ == "__main__":
	app.run(port=8080, debug=True)




static 폴더를 만들고 거기에 favicon.ico 파일을 넣어야 하는데 위치는 전체 소스를 참고하세요.

전체 소스는 github에 있습니다.

https://github.com/donarts/sourcecode/tree/main/python/example/_36_flask_favicon



댓글 1개:

  1. Hey, great thought on this blog, and I loved how you talked about software developer jobs. There are different platforms, and each platform has different benefits for its developers. I also know about one of the platforms, Eiliana.com; they are a new freelancing platform. They have 24*7 support for their freelancers and help you get the best project work.

    답글삭제