Skip to main content

Flask extension to serve md5 hashed assets via manifest file.

Project description

License: MIT PyPI pyversions Platforms PyPI version fury.io GitHub Workflow Status (with event) Coverage

Flask-Cache-Manifest

Flask-cache-manifest is a Flask extension to help you serve your md5 hashed assets. Having file hashes in filenames is a popular feature of modern asset bundlers. It's a good strategy for browser cache busting. However, Flask does not provide an easy way to reference those complicated and ever-changing filenames. Flask-cache-manifest lets you reference those assets by leveraging cache_manifest.json files.

Full Documentation: https://maxdup.github.io/flask-cache-manifest/

Turns:

<link type="text/css" rel="stylesheet"
      href="{{ hashed_url_for('static', filename='css/app.css') }}">

into:

<link type="text/css" rel="stylesheet"
      href="/static/css/app-d41d8cd98f00b204e9800998ecf8427e.css">

Installation

pip install flask-cache-manifest

Initializing

The extension needs to be loaded alongside your Flask application.

Here's how it's done:

from flask import Flask, Blueprint
from flask_cache_manifest import FlaskCacheManifest

flaskCacheManifest = FlaskCacheManifest()

app = Flask('my-app',
            static_folder='dist/static',
            static_url_path='/static')

bp = Blueprint('my-blueprint',
               __name__,
               static_folder='blueprints/static',
               static_url_path='/bp/static')

app.register_blueprint(bp)

flaskCacheManifest.init_app(app)

app.run()

NOTE: Ideally, flaskCacheManifest.init_app needs to be called after you've registered your blueprints. Static folders registered after init_app will not be loaded.

Usage

Flask-cache-manifest adds the hashed_url_for function for use in your templates. It is analogous to Flask's url_for. Given the above example and its blueprints, here's how you would be able to reference your static files in your Jinja templates.

<!-- from the app's static folder -->
<link type="text/css" rel="stylesheet"
      href="{{ hashed_url_for('static', filename='css/app.css') }}">

<!-- from the blueprint's static folder -->
<link type="text/css" rel="stylesheet"
      href="{{ hashed_url_for('my-blueprint.static', filename='css/app.css') }}">

<!-- from the static folder relative to what is currently being rendered -->
<link type="text/css" rel="stylesheet"
      href="{{ hashed_url_for('.static', filename='css/app.css') }}">

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-cache-manifest-1.0.4.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

flask_cache_manifest-1.0.4-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file flask-cache-manifest-1.0.4.tar.gz.

File metadata

  • Download URL: flask-cache-manifest-1.0.4.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for flask-cache-manifest-1.0.4.tar.gz
Algorithm Hash digest
SHA256 40db6de5273a87a576c7a3d4efe70fb7d196eb45619d4b4dab8edcaeeaa30bb7
MD5 a1e627afd382706e8b7c648917dd71e2
BLAKE2b-256 78c2250e9e7deab8c3a71c19ead8ef5358b6a7a9b2d879a01daeb18914fe020f

See more details on using hashes here.

File details

Details for the file flask_cache_manifest-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_cache_manifest-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3342d2fa3f0c91c6d1e915e6687245afac1a739e1322aa633d16cfcda5adf2fc
MD5 69a3d6a2fd6defe34e0543ed23607ac0
BLAKE2b-256 de29ca043728febe8504885fa7f9b3bd4a1a7d9036b2b309993a5958ca3a2f47

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page