{"id":13780506,"url":"https://github.com/edmondchuc/flask-htmx","last_synced_at":"2025-04-09T06:10:09.383Z","repository":{"id":43301040,"uuid":"448947226","full_name":"edmondchuc/flask-htmx","owner":"edmondchuc","description":"A Flask extension to work with HTMX.","archived":false,"fork":false,"pushed_at":"2024-09-22T04:13:41.000Z","size":96,"stargazers_count":145,"open_issues_count":1,"forks_count":16,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-02T04:06:03.576Z","etag":null,"topics":["flask","htmx","python"],"latest_commit_sha":null,"homepage":"http://flask-htmx.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edmondchuc.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-17T15:25:27.000Z","updated_at":"2025-03-15T19:23:32.000Z","dependencies_parsed_at":"2024-01-15T23:27:20.031Z","dependency_job_id":"3838faf0-290e-47e1-aef6-3720e86ac4f9","html_url":"https://github.com/edmondchuc/flask-htmx","commit_stats":{"total_commits":43,"total_committers":3,"mean_commits":"14.333333333333334","dds":"0.18604651162790697","last_synced_commit":"1f4cf4c47c3a3e09adaa3427b2597e13df666da6"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edmondchuc%2Fflask-htmx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edmondchuc%2Fflask-htmx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edmondchuc%2Fflask-htmx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edmondchuc%2Fflask-htmx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edmondchuc","download_url":"https://codeload.github.com/edmondchuc/flask-htmx/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987285,"owners_count":21028895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","htmx","python"],"created_at":"2024-08-03T18:01:16.538Z","updated_at":"2025-04-09T06:10:09.366Z","avatar_url":"https://github.com/edmondchuc.png","language":"Python","funding_links":[],"categories":["Third Party Packages 📦 \u003ca name = \"tools\"\u003e\u003c/a\u003e"],"sub_categories":["Helper Libraries"],"readme":"##########\nFlask-HTMX\n##########\n\n.. image:: https://badge.fury.io/py/flask-htmx.svg\n    :target: https://badge.fury.io/py/flask-htmx\n\n.. image:: https://readthedocs.org/projects/flask-htmx/badge/?version=latest\n    :target: https://flask-htmx.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\n\n.. image:: https://codecov.io/gh/edmondchuc/flask-htmx/branch/main/graph/badge.svg?token=K6YB3PB33T\n    :target: https://codecov.io/gh/edmondchuc/flask-htmx\n\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :target: https://github.com/psf/black\n\n.. image:: https://img.shields.io/badge/License-MIT-red.svg\n    :target: https://github.com/edmondchuc/flask-htmx/blob/main/LICENSE\n\n.. image:: https://static.pepy.tech/personalized-badge/flask-htmx?period=week\u0026units=international_system\u0026left_color=grey\u0026right_color=blue\u0026left_text=downloads/week\n    :target: https://pepy.tech/project/flask-htmx\n\n.. image:: https://static.pepy.tech/personalized-badge/flask-htmx?period=month\u0026units=international_system\u0026left_color=grey\u0026right_color=blue\u0026left_text=downloads/month\n    :target: https://pepy.tech/project/flask-htmx\n\n.. image:: https://static.pepy.tech/personalized-badge/flask-htmx?period=total\u0026units=international_system\u0026left_color=grey\u0026right_color=blue\u0026left_text=downloads\n    :target: https://pepy.tech/project/flask-htmx\n\nA Flask extension to work with HTMX.\n\nDocumentation: https://flask-htmx.readthedocs.io\n\n.. quickstart-startblock\n\nQuickstart\n==========\n\nInstall the extension with pip.\n\n.. code-block:: bash\n\n    pip install flask-htmx\n\nOr perhaps you use Poetry.\n\n.. code-block:: bash\n\n    poetry add flask-htmx\n\nHTMX Request\n------------\n\nYou can register the HTMX object by passing the Flask\n:code:`app` object via the constructor.\n\n.. code-block:: python\n\n    htmx = HTMX(app)\n\nOr you can register the HTMX object using\n`HTMX.init_app() \u003chttps://flask-htmx.readthedocs.io/en/latest/flask_htmx.htmx.html#flask_htmx.htmx.HTMX.init_app\u003e`_.\n\n.. code-block:: python\n\n    htmx = HTMX()\n    htmx.init_app(app)\n\nA minimal working example.\n\n.. code-block:: python\n\n    from flask import Flask, render_template\n    from flask_htmx import HTMX\n\n    app = Flask(__name__)\n    htmx = HTMX(app)\n\n    @app.route(\"/\")\n    def home():\n        if htmx:\n            return render_template(\"partials/thing.html\")\n        return render_template(\"index.html\")\n\nThe above example checks whether the request came\nfrom HTMX or not. If :code:`htmx` evaluates to\n`True \u003chttps://docs.python.org/3/library/constants.html#True\u003e`_, then it was a HTMX request, else\n`False \u003chttps://docs.python.org/3/library/constants.html#False\u003e`_.\n\nThis allows you to return a partial\nHTML when it's a HTMX request or the full page HTML\nwhen it is a normal browser request.\n\nFlask-HTMX also supports checking for HTMX headers\nduring a request in the view. For example, check\nthe current URL of the browser of a HTMX request.\n\n.. code-block:: python\n\n    @app.route(\"/\")\n    def home():\n        current_url = htmx.current_url\n        return render_template(\"index.html\", current_url=current_url)\n\nOther HTMX request headers are also available.\nSee https://htmx.org/reference/#request_headers.\n\nHTMX Response\n-------------\n\nYou might be interested on adding\n`htmx response headers \u003chttps://htmx.org/reference/#response_headers\u003e`_ to your response.\nUse :code:`flask_htmx.make_response` for that. For example, instead of:\n\n.. code-block:: python\n\n    import json\n    from flask import make_response\n    from my_app import app\n\n    @app.route(\"/hola-mundo\")\n    def hola_mundo():\n        body = \"Hola Mundo!\"\n        response = make_response(body)\n        response.headers[\"HX-Push-URL\"] = \"false\"\n        trigger_string = json.dumps({\"event1\":\"A message\", \"event2\":\"Another message\"})\n        response.headers[\"HX-Trigger\"] = trigger_string\n        return response\n\nYou can do:\n\n.. code-block:: python\n\n    from flask_htmx import make_response\n    from my_app import app\n\n    @app.route(\"/hola-mundo\")\n    def hola_mundo():\n        body = \"Hola Mundo!\"\n        return make_response(\n            body,\n            push_url=False,\n            trigger={\"event1\": \"A message\", \"event2\": \"Another message\"},\n        )\n\n.. quickstart-endblock\n\nDocumentation\n=============\nVisit the `full documentation \u003chttps://flask-htmx.readthedocs.io\u003e`_.\n\nDevelopment\n===========\n\nInstallation\n------------\n\n.. code-block:: bash\n\n    poetry install\n\nRunning tests\n-------------\n\n.. code-block:: bash\n\n    poetry run pytest\n\nCoverage\n--------\n\n.. code-block:: bash\n\n    poetry run pytest --cov=flask_htmx tests/\n\nDocs\n----\n\n.. code-block:: bash\n\n    sphinx-autobuild docs docs/_build/html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedmondchuc%2Fflask-htmx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedmondchuc%2Fflask-htmx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedmondchuc%2Fflask-htmx/lists"}