Flask extension to handle favicons.
Project description
Flask-favicon
Flask-favicon is a Flask extension which generates multiple favicon variants for different platforms. The goal is to cover as many devices as possible from a single image file. Flask-favicon serves all the assets for you and provides an easy to use Jinga template which you can include in your html <head>
.
Full Documentation: https://maxdup.github.io/flask-favicon/
Installation
Flask-favicon is available on the Python Package Index. This makes installing it with pip as easy as:
pip install flask-favicon
Initializing
The extension needs to be loaded alongside your Flask application. All favicons need to be declared during app creation with register_favicon()
. You may register any amount of favicons. You should have at least one favicon named as 'default'
Here's a minimal example of how this is done:
from flask import Flask, Blueprint
from flask_favicon import FlaskFavicon
flaskFavicon = FlaskFavicon()
app = Flask('my-app')
bp = Blueprint('my-blueprint', __name__)
app.register_blueprint(bp)
flaskFavicon.init_app(app)
flaskFavicon.register_favicon('source/favicon.png', 'default') # filename, favicon identifier
flaskFavicon.register_favicon('source/favicon-alt.png', 'default-alt')
flaskFavicon.register_favicon('source/promo.png', 'promo')
app.run()
Usage
Initiallizing FlaskFavicon
provides you with a Jinga template to be inserted in your <head>
.
<!-- _head.html -->
<head>
...
{% include "flask-favicon.html" %}
...
</head>
By default, the flask-favicon.html
template will be populated with the favicon registered as 'default'
.
To use the alternative favicons as declared earlier, you can use Flask-favicon's use_favicon
decorator alongside route declarations.
from flask import Blueprint, render_template
from flask_favicon import use_favicon
bp_site = Blueprint('site', __name__)
@bp_site.route("/")
# will use 'default' favicon
def index():
return render_template('index.html')
@bp_site.route("/promo")
@use_favicon('promo')
def promo():
return render_template('promo-page.html')
@bp_site.route("/special-event")
@use_favicon('default-alt')
def special_event():
return render_template('special-page.html')
NOTE:
@use_favicon()
comes after the@bp.route()
decorator.