wagtail-embedvideos
Simple app that works similar to wagtailimages, but for embedding YouTube and Vimeo videos and music from SoundCloud.
The current version is tested for compatiblily with the following:
Wagtail version 4.x
Django versions 3.2 to 4.0
Python versions 3.8 to 3.10
Maintained by Basil Shubin, and some great contributors.
Installation
First install the module, preferably in a virtual environment. It can be installed from PyPI:
pip install wagtail-embedvideos
Requirements
You must have django-embed-video installed and configured, see the django-embed-video documentation for details and setup instructions.
Setup
Make sure the project is configured for django-embed-video.
Then add the following settings:
INSTALLED_APPS += (
"wagtail_embed_videos",
)
Then run ./manage.py migrate to create the required database tables.
Usage
In models, implement as a ForeignKey relation, same as wagtailimages.
# models.py
from wagtail.models import Page, PageBase
from wagtail_embed_videos import get_embed_video_model_string
from wagtail_embed_videos.edit_handlers import EmbedVideoChooserPanel
class CustomPage(Page):
video = models.ForeignKey(
get_embed_video_model_string(),
null=True, blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
# ...
content_panels = [
EmbedVideoChooserPanel('video'),
]
In templates, load the embed_video_tags library in every template where you want to use it:
<!-- custom_page.html -->
{% load embed_video_tags %}
{% video self.video.url as my_video %}
{% video my_video 'small' %}
{% endvideo %}
Check django-embed-video documentation for more details.
Contributing
If you like this module, forked it, or would like to improve it, please let us know! Pull requests are welcome too. :-)
Credits
wagtail-embedvideos was originally started by InfoPortugal, S.A. who has now unfortunately abandoned the project.
License
wagtail-embedvideos is released under the BSD license.
Changes
4.1.0 (2026-09-04)
Wagtail version 4.1 supported. Dropped support for Wagtail < 4.1.
Switched get_usage() to Wagtail 4.1’s ReferenceIndex API (wagtail.models.ReferenceIndex.get_references_to(self).group_by_source_object()), replacing the old reflection-based get_object_usage(). Existing installations must run ./manage.py rebuild_references_index once after upgrading, to backfill usage data for content saved before the upgrade.
The embed video “usage” view now checks “change” permission on the specific instance, and resolves proper edit URLs/labels for referencing objects via AdminURLFinder; the usage template shows which field/content path each reference comes from.
Added a usage count link to the embed video edit page, and removed the usage_count_enabled feature-flag guard around usage counts on the delete/bulk-delete confirmation templates (usage counting is now always available via ReferenceIndex).
Fixed get_valid_next_url_from_request import (wagtail.admin.views.pages.utils moved to wagtail.admin.utils in Wagtail 4.1).
4.0.0 (2026-09-04)
Wagtail version 4.x supported. Dropped support for Wagtail < 4.0.
Rewrote the embed video chooser (widget, views and JS) on Wagtail 4.x’s generic chooser framework (wagtail.admin.views.generic.chooser, wagtail.admin.viewsets.chooser.ChooserViewSet, wagtail.admin.widgets.BaseChooser), replacing the old AdminChooser/ModalWorkflow-based implementation.
Dropped the vendored tabs.js: Wagtail 4.x exposes its own chooser-modal JS (window.Chooser, window.ChooserModalOnloadHandlerFactory) as public globals for exactly this purpose, so it’s no longer needed.
Dropped support for Python 3.7 (no longer obtainable via uv/ python-build-standalone; EOL since June 2023). Python versions 3.8 to 3.10 supported.
Excluded the tests package from the built wheel/sdist.
3.0.0 (2026-09-04)
Wagtail version 3.x supported. Dropped support for Wagtail < 3.0.
Django versions 3.2 and 4.0 supported. Dropped support for Django < 3.2.
Python versions 3.8 to 3.10 supported.
Vendored Wagtail’s own tabs.js into the embed video chooser modal, since Wagtail 3.x no longer exposes it as a public global, restoring full keyboard accessibility for the chooser’s tabbed UI.
Migrated packaging from setup.py/setup.cfg to pyproject.toml.
Switched CI from Travis to GitHub Actions.
Fixed broken imports.
0.5.12 (2022-04-20)
Fixed broken imports.
0.5.11 (2021-12-13)
Added ru translation.
0.5.10 (2021-12-06)
Fixed stupid typo.
0.5.9 (2021-12-06)
Wagtail version >= 2.15 supported.
0.5.8 (2021-11-12)
Wagtail version >= 2.14 supported.
0.5.7 (2021-11-11)
Wagtail version >= 2.13 supported.
0.5.6 (2021-11-10)
Wagtail version >= 2.12 supported.
0.5.5 (2021-11-09)
Wagtail version >= 2.11 supported.
0.5.4 (2021-11-08)
Wagtail version >= 2.10 supported.
0.5.3 (2021-11-07)
Replacing broken 0.5.2 release.
0.5.2 (2021-11-06)
Wagtail version >= 2.9 supported.
0.5.1 (2021-11-05)
Wagtail version >= 2.8 supported.
0.5.0 (2021-11-04)
Wagtail version >= 2.4 supported.
Dropped support for Python < 3.x.
0.4.1 (2018-08-22)
Wagtail version >= 2.x supported.
Django version >= 2.x supported.
Dropped support for Wagtail < 2.x.
0.3.0 (2017-04-24)
Changed the structure of “AbstractEmbedVideo”, because “TagSearchable” is not used anymore.
0.2.5 (2017-02-09)
This is the last version compatible with Wagtail <= 1.6, because TagSearchable was deprecated and then removed.
Metadata
Release files for wagtail-embedvideos 4.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wagtail_embedvideos-4.1.0.tar.gz | 36.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wagtail_embedvideos-4.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.9 kB
Release files / wagtail_embedvideos-4.1.0.tar.gz
| Download URL | wagtail_embedvideos-4.1.0.tar.gz |
|---|---|
| Size | 36.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6ab49b6bbabcdd6fb98c3b271e7657cf2231ec591289b28e50f45f9fda6d2874
|
|
BLAKE2b-256 checksum How to use checksums |
93e20bde6d0af82233bfa3dbdf830684988638301c0933f9176b763aa6ed0681
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / wagtail_embedvideos-4.1.0-py3-none-any.whl
| Download URL | wagtail_embedvideos-4.1.0-py3-none-any.whl |
|---|---|
| Size | 54.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f04c3a260a04f8882d95f3ac083d2f29d876c36852c9ab97b74ae529e4b1beec
|
|
BLAKE2b-256 checksum How to use checksums |
f640b85d43229cd4ed817b19e443ea57a3fc1517b0627a84c0eec93ac025a768
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency log