Extension du flacon qui applique des configurations communes à toutes les applications FLASK de Webteam.
from canonicalwebteam . flask_base . app import FlaskBase
app = FlaskBase ( __name__ , "app.name" )Ou:
from canonicalwebteam . flask_base . app import FlaskBase
app = FlaskBase (
__name__ ,
"app.name" ,
template_404 = "404.html" ,
template_500 = "500.html" ,
favicon_url = "/static/favicon.ico" ,
)Pour le développement local, il est préférable de tester ce module avec l'un de nos projets de site Web comme ubuntu.com. Pour plus d'informations, suivez ce guide (interne uniquement).
Flaskbase comprend un proxyfix pour éviter le décapage SSL sur les redirectes.
FlaskBase utilise des réponses YAML pour permettre une configuration facile des redirections et un retour des réponses supprimées, en créant redirects.yaml , permanent-redirects.yaml et deleted.yaml dans le répertoire racine du site.
FlaskBase peut éventuellement utiliser des modèles pour générer les réponses d'erreur 404 et 500 :
app = FlaskBase (
__name__ ,
"app.name" ,
template_404 = "404.html" ,
template_500 = "500.html" ,
) Cela conduira à EG http://localhost/non-existent-path retourner un statut 404 avec le contenu des templates/404.html .
FlaskBase peut éventuellement fournir des redirections pour les chemins couramment interrogés /favicon.ico , /robots.txt et /humans.txt aux emplacements sensibles:
from canonicalwebteam . flask_base . app import FlaskBase
app = FlaskBase (
__name__ ,
"app.name" ,
template_404 = "404.html" ,
template_500 = "500.html" ,
favicon_url = "/static/favicon.ico" ,
robots_url = "/static/robots.txt" ,
humans_url = "/static/humans.txt"
) Cela conduira à EG http://localhost/favicon.ico renvoyant une redirection 302 vers http://localhost/static/favicon.ico .
Efface automatiquement toutes les barres obliques de fin de toutes les itinéraires.
Vous obtenez deux aides Jinja2 à utiliser dans vos modèles de Flask-Base:
now une fonction qui publie la date actuelle au format passé - {{ now('%Y') }} -> YYYYversioned_static est une fonction qui empreint les empreintes digitales de l'actif passé - {{ versioned_static('asset.js') }} -> static/asset?v=asset-hashVous obtenez les en-têtes suivants définis automatiquement:
X-Content-Type-Options: NOSNIFFPermissions-Policy: interest-cohort=()X-Frame-Options: SAMEORIGIN , qui peut être exclue par exclude_xframe_options_header décorateurCache-Control if response.cache_control.* Non défini et selon le versioning de l'actif statique (voir versioned_static ci-dessus)security.txt , robots.txt et humans.txt Si vous créez une security.txt , robots.txt ou humans.txt à la racine de votre projet, ceux-ci seront servis sur /.well-known/security.txt , /robots.txt et /humans.txt respectivement.
/_status/check le point de terminaison Ajoute automatiquement le point de terminaison /_status/check qui est utilisé par les caches de contenu pour la vérification de la santé backend ou par exemple par K8 pour vérifier l'état des pods.
Pour exécuter les tests, exécutez SECRET_KEY=fake python3 -m unittest discover tests .