NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5236 most downloaded on PyPI
A Django content management system.
Last release 26 days ago
25 Aug 2026
Release timing varies
gaps range from 9 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
13 years old
300 releases · first in 2014
Added PostgreSQL search engine (Bertrand Bordage, Jaap Roes, Arne de Laat, Ramon de Jezus)
WAGTAILADMIN_PERMITTED_LANGUAGES (Daniel Chimeno)WAGTAIL_AUTO_UPDATE_PREVIEW setting that when set to True, allows the preview window to be refreshed when changes have been made in the editor (Bertrand Bordage)submit_buttons block to login template (Gagaro)construct_image_chooser_queryset, construct_document_chooser_queryset and construct_page_chooser_queryset hooks (Gagaro)Image and Rendition models are connected automatically (Mike Dingjan)PageChooserBlock can now accept a list/tuple of page models as target_model (Mikalai Radchuk)IndexView to be more inline with the Wagtail styleguide (Andy Babic).nvmrc to the project root for Node versioning support (Janneke Janssen)form_fields_exclude property to ModelAdmin views (Matheus Bratfisch)AUTH_PASSWORD_VALIDATORS (Bertrand Bordage)non_field_errors when validation fails in the page editor (Matt Westcott)WAGTAILADMIN_RECENT_EDITS_LIMIT setting to to define the number of your most recent edits on the dashboard (Maarten Kling)is_staff flag (Matt Westcott)TAG_SPACES_ALLOWED setting (Kees Hink, Alex Gleason)Page.api_fields using a new APIField class (Karl Hobley)classname argument to StreamFieldPanel (Christine Ho)group keyword argument to StreamField blocks for grouping related blocks together in the block menu (Andreas Nüßlein){{ block.super }} in snippets/type_index.html (LB (Ben Johnston))request.is_preview flag (Wietze Helmantel)get_db_prep_value conversion are now supported (thenewguy)annotate_score (Karl Hobley)RichTextBlock toolbar now correctly positioned within StructBlock (Janneke Janssen)One column per quarter.
Fix: Removed erroneous |safe filter from search results template in project template (Karl Hobley)
|safe filter from search results template in project template (Karl Hobley)Added support for comparing page revisions (Karl Hobley, Janneke Janssen, Matt Westcott)
get_context methods on StreamField blocks can now access variables from the parent context (Mikael Svensson, Peter Baumgartner)get_api_representation method to streamfield blocks allowing the JSON representation in the API to be customised (Marco Fucci)before_copy_page and after_copy_page hooks (Matheus Bratfisch)ChoiceBlock now omits the blank option if the block is required and has a default value (Andreas Nüßlein)add_subpage view now maintains a next URL parameter to specify where to redirect to after completing page creation (Robert Rollins)wagtailforms module now allows to define custom form submission model, add custom data to CSV export and some other customisations (Mikalai Radchuk)save(update_fields=[...]) operations (Matt Westcott)get_extra_class_names_for_field_col / get_extra_attrs_for_field_col methods (Andy Babic)pageurl / slugurl tags now function when request.site is not available (Tobias McNulty, Matt Westcott)1.8, 1.9, 1.10
2.7, 3.3, 3.4, 3.5
1.8 LTS
1.8, 1.9, 1.10
2.7, 3.3, 3.4, 3.5
Added support for comparing page revisions (Karl Hobley, Janneke Janssen, Matt Westcott)
get_context methods on StreamField blocks can now access variables from the parent context (Mikael Svensson, Peter Baumgartner)get_api_representation method to streamfield blocks allowing the JSON representation in the API to be customised (Marco Fucci)before_copy_page and after_copy_page hooks (Matheus Bratfisch)ChoiceBlock now omits the blank option if the block is required and has a default value (Andreas Nüßlein)add_subpage view now maintains a next URL parameter to specify where to redirect to after completing page creation (Robert Rollins)wagtailforms module now allows to define custom form submission model, add custom data to CSV export and some other customisations (Mikalai Radchuk)save(update_fields=[...]) operations (Matt Westcott)get_extra_class_names_for_field_col / get_extra_attrs_for_field_col methods (Andy Babic)Fix: Removed erroneous |safe filter from search results template in project template (Karl Hobley)
|safe filter from search results template in project template (Karl Hobley)save(update_fields=[...]) operations (Matt Westcott)Fix: Reduced Rendition.focal_point_key field length to prevent migration failure when upgrading to Wagtail 1.8 on MySQL with utf8 character encoding (
Rendition.focal_point_key field length to prevent migration failure when upgrading to Wagtail 1.8 on MySQL with utf8 character encoding (Andy Chosak, Matt Westcott)New page privacy options (Shawn Makinson, Tom Miller, Luca Perico, Matt Westcott)
edit_handler in site settings (Axel Haustant)get_landing_page_template getter method to AbstractForm (Gagaro)Page.get_admin_display_title method to override how the title is displayed in the admin (Henk-Jan van Hasselaar)first_common_ancestor method to PageQuerySet (Tim Heap)PageChooserBlock now accepts a target_model option to specify the required page type (Tim Heap)fields / exclude options passed on custom model forms (Thejaswi Puthraya)StaticBlock (Benoît Vogel)BlockQuoteBlock (Scot Hacker)exclude_from_explorer attribute to the ModelAdmin class to allow hiding instances of a page type from Wagtail's explorer views (Andy Babic)above_login, below_login, fields and login_form customisation blocks to the login page template (Tim Heap)ChoiceBlock now accepts a callable as the choices list (Mikalai Radchuk)in_site method for filtering page querysets to pages within the specified site (Chris Rogers)OPTIONS of the WAGTAILSEARCH_BACKENDS setting (PyMan Claudio Marinozzi)AbstractForm now respects custom get_template methods on the page model (Gagaro)get_context_data (Andy Babic)set_url_paths management command is now compatible with Django 1.10 (Benjamin Bach)search_garbage_collect management command now works when wagtailsearchpromotions is not installed (Morgan Aubert)wagtail.contrib.settings context processor no longer fails when request.site is unavailable (Diederik van der Boor)TableBlock content is now indexed for search (Morgan Aubert)Page.copy() is now marked as alters_data, to prevent template code from triggering it (Diederik van der Boor)New page privacy options (Shawn Makinson, Tom Miller, Luca Perico, Matt Westcott)
edit_handler in site settings (Axel Haustant)get_landing_page_template getter method to AbstractForm (Gagaro)Page.get_admin_display_title method to override how the title is displayed in the admin (Henk-Jan van Hasselaar)first_common_ancestor method to PageQuerySet (Tim Heap)PageChooserBlock now accepts a target_model option to specify the required page type (Tim Heap)fields / exclude options passed on custom model forms (Thejaswi Puthraya)StaticBlock (Benoît Vogel)BlockQuoteBlock (Scot Hacker)exclude_from_explorer attribute to the ModelAdmin class to allow hiding instances of a page type from Wagtail's explorer views (Andy Babic)above_login, below_login, fields and login_form customisation blocks to the login page template (Tim Heap)ChoiceBlock now accepts a callable as the choices list (Mikalai Radchuk)in_site method for filtering page querysets to pages within the specified site (Chris Rogers)OPTIONS of the WAGTAILSEARCH_BACKENDS setting (PyMan Claudio Marinozzi)AbstractForm now respects custom get_template methods on the page model (Gagaro)get_context_data (Andy Babic)set_url_paths management command is now compatible with Django 1.10 (Benjamin Bach)search_garbage_collect management command now works when wagtailsearchpromotions is not installed (Morgan Aubert)wagtail.contrib.settings context processor no longer fails when request.site is unavailable (Diederik van der Boor)TableBlock content is now indexed for search (Morgan Aubert)Page.copy() is now marked as alters_data, to prevent template code from triggering it (Diederik van der Boor)Elasticsearch 2 support (Karl Hobley)
|embed filter has been converted into a templatetag {% embed %} (Janneke Janssen)wagtailforms module now provides a FormSubmissionPanel for displaying details of form submissions (João Luiz Lorencetti)from wagtail import VERSION (Tim Heap)send_mail logic has been moved from AbstractEmailForm.process_form_submission into AbstractEmailForm.send_mail. Now it's easier to override this logic (Tim Leguijt)before_create_page, before_edit_page, before_delete_page hooks (Karl Hobley)SnippetChooserBlock now supports passing the model name as a string (Nick Smith)__latest__ migration, logically preventing those apps from receiving new migrations (Matt Westcott)InlinePanel now accepts a classname parameter as per the documentation (emg36, Matt Westcott)USE_THOUSAND_SEPARATOR = True no longer breaks the rendering of numbers in JS code for InlinePanel (Mattias Loverot, Matt Westcott)wagtail_userprofile to avoid naming collisions with other user profile models (Matt Westcott)SECURE_SSL_REDIRECT = True (Aymeric Augustin)Elasticsearch 2 support (Karl Hobley)
|embed filter has been converted into a templatetag {% embed %} (Janneke Janssen)wagtailforms module now provides a FormSubmissionPanel for displaying details of form submissions (João Luiz Lorencetti)from wagtail import VERSION (Tim Heap)send_mail logic has been moved from AbstractEmailForm.process_form_submission into AbstractEmailForm.send_mail. Now it's easier to override this logic (Tim Leguijt)before_create_page, before_edit_page, before_delete_page hooks (Karl Hobley)SnippetChooserBlock now supports passing the model name as a string (Nick Smith)__latest__ migration, logically preventing those apps from receiving new migrations (Matt Westcott)InlinePanel now accepts a classname parameter as per the documentation (emg36, Matt Westcott)USE_THOUSAND_SEPARATOR = True no longer breaks the rendering of numbers in JS code for InlinePanel (Mattias Loverot, Matt Westcott)wagtail_userprofile to avoid naming collisions with other user profile models (Matt Westcott)SECURE_SSL_REDIRECT = True (Aymeric Augustin)Fix: Restore compatibility with django-debug-toolbar 1.5 (Matt Westcott)
Fix: Initial values of checkboxes on group permission edit form now are visible on Django 1.10 (Matt Westcott)
Fix: Wagtail's middleware classes are now compatible with Django 1.10's new-style middleware (Karl Hobley)
Pages.can_create_at method is now checked in the create page view (Mikalai Radchuk)ManifestStaticFilesStorage (Matt Westcott)WAGTAIL_ALLOW_UNICODE_SLUGS setting to make Unicode support optional in page slugs (Matt Westcott)Pages.can_create_at method is now checked in the create page view (Mikalai Radchuk)ManifestStaticFilesStorage (Matt Westcott)Fix: Removed alignment options (deprecated in HTML and not rendered by Wagtail) from TableBlock context menu (Moritz Pfeiffer)
include_block template tag for improved StreamField template inclusion (Matt Westcott, Mikalai Radchuk)FieldRowPanel now creates equal-width columns automatically if col* classnames are not specified (Chris Rogers)search_fields are defined on the model (Josh Schneier)wagtailforms.models.AbstractEmailForm now supports multiple email recipients (Serafeim Papastefanos)STATICFILES_STORAGE (Jonny Scholes)TableBlock context menu (Moritz Pfeiffer)RichText values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage)--schema-only flag on update_index no longer expects an argument (Karl Hobley)Fix: Removed alignment options (deprecated in HTML and not rendered by Wagtail) from TableBlock context menu (Moritz Pfeiffer)
include_block template tag for improved StreamField template inclusion (Matt Westcott, Mikalai Radchuk)FieldRowPanel now creates equal-width columns automatically if col* classnames are not specified (Chris Rogers)search_fields are defined on the model (Josh Schneier)wagtailforms.models.AbstractEmailForm now supports multiple email recipients (Serafeim Papastefanos)STATICFILES_STORAGE (Jonny Scholes)TableBlock context menu (Moritz Pfeiffer)RichText values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage)--schema-only flag on update_index no longer expects an argument (Karl Hobley)Fix: Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)
Fixed regression in 1.5.1 on editing external links (Stephen Rice)
Fix: When editing a document link in rich text, the document ID is no longer erroneously interpreted as a page ID (Stephen Rice)
Eliminated the deprecated register.assignment_tag on Django 1.9 (Josh Schneier)
register_page_listing_buttons for adding action buttons to the page explorersettings template tag (Tim Heap)insert_global_admin_js for inserting custom JavaScript throughout the admin backend (Tom Dyson)www prefix (Matt Westcott)search_fields attribute on Page models (and other searchable models) has changed from a tuple to a list (Tim Heap)PasswordChangeForm when user changes their password, requiring the user to enter their current password (Matthijs Melissen)register.assignment_tag on Django 1.9 (Josh Schneier)--schema-only option to update_index management commandStreamField blocks (Benjamin Bach)settings.dev (Tomas Olander)WAGTAIL_APPEND_SLASH setting to determine whether page URLs end in a trailing slash (Andrew Tork Baker)StreamBlock blocks (Karl Hobley)get_upload_to method to AbstractRendition which, when overridden, allows control over where image renditions are stored (Rob Moggach and Matt Westcott)Document model replaced with get_document_model function in wagtail.contrib.wagtailmedusa and in wagtail.contrib.wagtailapimultipart/form-data where appropriate (Tim Heap)decorate_urlpatterns now uses functools.update_wrapper to keep view names and docstrings (Mario César)__ alias that prevented strings getting picked up for translation (Juha Yrjölä)TypeError (Bojan Mihelac)Eliminated the deprecated register.assignment_tag on Django 1.9 (Josh Schneier)
register_page_listing_buttons for adding action buttons to the page explorersettings template tag (Tim Heap)insert_global_admin_js for inserting custom JavaScript throughout the admin backend (Tom Dyson)www prefix (Matt Westcott)search_fields attribute on Page models (and other searchable models) has changed from a tuple to a list (Tim Heap)PasswordChangeForm when user changes their password, requiring the user to enter their current password (Matthijs Melissen)register.assignment_tag on Django 1.9 (Josh Schneier)--schema-only option to update_index management commandStreamField blocks (Benjamin Bach)settings.dev (Tomas Olander)WAGTAIL_APPEND_SLASH setting to determine whether page URLs end in a trailing slash (Andrew Tork Baker)StreamBlock blocks (Karl Hobley)get_upload_to method to AbstractRendition which, when overridden, allows control over where image renditions are stored (Rob Moggach and Matt Westcott)Document model replaced with get_document_model function in wagtail.contrib.wagtailmedusa and in wagtail.contrib.wagtailapimultipart/form-data where appropriate (Tim Heap)decorate_urlpatterns now uses functools.update_wrapper to keep view names and docstrings (Mario César)__ alias that prevented strings getting picked up for translation (Juha Yrjölä)TypeError (Bojan Mihelac)Fix: Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)
Fix: Paste / drag operations done entirely with the mouse are now correctly picked up as edits within the rich text editor (Matt Fozard)
New translation for Slovenian (Mitja Pagon)
wagtailuserbar template tag now gracefully handles situations where the request object is not in the template context (Matt Westcott)ALLOWED_HOSTS = ['*'] (Robert Rollins)MESSAGE_TAGS in project settings no longer causes messages in the Wagtail admin to lose their styling (Tim Heap)Fixed regression introduced in 1.4.2 which caused Wagtail to query the database during a system check (Tim Heap)
Fix: Streamfields no longer break on validation error
wagtail.wagtailadmin.wagtail_hooks no longer calls static during app load, so you can use ManifestStaticFilesStorage without calling the collectstatic commandPage edit handler has been specified using the edit_handler attribute (Tim Heap)Fix: Fixed erroneous rendering of up arrow icons (Rob Moorman)
Added support for viewing previous revisions of pages, and previewing or rolling back to earlier versions
Document model can now be overridden using the new WAGTAILDOCS_DOCUMENT_MODEL setting (Alex Gleason)edit_handler property (Mikalai Radchuk)insert_global_admin_css for inserting custom CSS throughout the admin backend (Tom Dyson)construct_explorer_page_queryset for customising the set of pages displayed in the page explorerPage model now has two new methods get_site() and get_url_parts() to aid with customising the page URL generation logicconstruct_homepage_summary_items hook) now better vertically spaced (Nicolas Kuttler)StreamBlock now has provision for throwing non-field-specific validation errorsPage.path field is now explicitly given the "C" collation on PostgreSQL to prevent tree ordering issues when using a database created with the Slovak localeChooserBlock now correctly handles models with primary keys other than id (alexpilot11)RedirectMiddleware when a middleware class before SiteMiddleware returns a response (Josh Schneier)username field (Adam Bolfik)username, first_name, last_name and email fields on the user model (Eirik Krogstad)Added support for viewing previous revisions of pages, and previewing or rolling back to earlier versions
Document model can now be overridden using the new WAGTAILDOCS_DOCUMENT_MODEL setting (Alex Gleason)edit_handler property (Mikalai Radchuk)insert_global_admin_css for inserting custom CSS throughout the admin backend (Tom Dyson)construct_explorer_page_queryset for customising the set of pages displayed in the page explorerPage model now has two new methods get_site() and get_url_parts() to aid with customising the page URL generation logicconstruct_homepage_summary_items hook) now better vertically spaced (Nicolas Kuttler)StreamBlock now has provision for throwing non-field-specific validation errorsPage.path field is now explicitly given the "C" collation on PostgreSQL to prevent tree ordering issues when using a database created with the Slovak localeChooserBlock now correctly handles models with primary keys other than id (alexpilot11)RedirectMiddleware when a middleware class before SiteMiddleware returns a response (Josh Schneier)username field (Adam Bolfik)username, first_name, last_name and email fields on the user model (Eirik Krogstad)Fix: Applied workaround for failing wagtailimages migration on Django 1.8.8 / 1.9.1 with Postgres (see https://code.djangoproject.com/ticket/26034)
Support for indexing fields across relations in Elasticsearch
register_admin_search_area hook to register new areas (Ben Kerle)WagtailPageTests, a helper module to simplify writing tests for Wagtail sitessubpage_types and parent_page_types attributes of page modelsWAGTAIL_PASSWORD_RESET_ENABLED setting to allow password resets to be disabled independently of the password management interface (John Draper).alt attribute to image renditionssrc, width, height and alt attributes can now be overridden by attributes passed to the {% image %} tagPage methods can_exist_under, can_create_at, can_move_to for customising page type business ruleswagtailadmin.utils.send_mail now passes extra keyword arguments to Django's send_mail function (Matthew Downey)page_unpublish signal is now fired for each page that was unpublished by a call to PageQuerySet.unpublish()get_upload_to method to AbstractImage, to allow overriding the default image upload path (Ben Emery)site_name field to sites (Timo Rieber)request.is_preview variable for templates to distinguish between previewing and live (Denis Voskvitsov){% image %} tag (Christian Peters)get_by_natural_keyPage model) now properly respects the parent_page_types settingsubpage_types / parent_page_types business rules are now enforced when moving pagesMenuItem url parameter can now take a lazy URL (Adon Metcalfe, rayrayndwiga)Support for indexing fields across relations in Elasticsearch
register_admin_search_area hook to register new areas (Ben Kerle)WagtailPageTests, a helper module to simplify writing tests for Wagtail sitessubpage_types and parent_page_types attributes of page modelsWAGTAIL_PASSWORD_RESET_ENABLED setting to allow password resets to be disabled independently of the password management interface (John Draper).alt attribute to image renditionssrc, width, height and alt attributes can now be overridden by attributes passed to the {% image %} tagPage methods can_exist_under, can_create_at, can_move_to for customising page type business ruleswagtailadmin.utils.send_mail now passes extra keyword arguments to Django's send_mail function (Matthew Downey)page_unpublish signal is now fired for each page that was unpublished by a call to PageQuerySet.unpublish()get_upload_to method to AbstractImage, to allow overriding the default image upload path (Ben Emery)site_name field to sites (Timo Rieber)request.is_preview variable for templates to distinguish between previewing and live (Denis Voskvitsov){% image %} tag (Christian Peters)get_by_natural_keyPage model) now properly respects the parent_page_types settingsubpage_types / parent_page_types business rules are now enforced when moving pagesMenuItem url parameter can now take a lazy URL (Adon Metcalfe, rayrayndwiga)Fix: Project template no longer raises a deprecation warning (Maximilian Stauss)
wagtail.contrib.settings, a module to allow administrators to edit site-specific settingssearch method on their QuerySetsoperator argument to determine whether multiple terms are ORed or ANDed togetherorder_by_relevance argument, which can be set to False to preserve the original QuerySet orderingmax_num and min_num arguments to limit the number of inline itemsmax_num is reached (Salvador Faria)get_context method for passing additional variables to the block templatefirst_published_at and latest_revision_created_at fields on page models are now available as filter fields on search queriespage variable to the template (e.g. because they override the serve method)PageManager.sibling_of(page) and PageManager.not_sibling_of(page) now default to inclusive (i.e. page is considered a sibling of itself), for consistency with other sibling methods_ query parameter used by jQuery for cache-bustingFix: Project template no longer raises a deprecation warning (Maximilian Stauss)
wagtail.contrib.settings, a module to allow administrators to edit site-specific settingssearch method on their QuerySetsoperator argument to determine whether multiple terms are ORed or ANDed togetherorder_by_relevance argument, which can be set to False to preserve the original QuerySet orderingmax_num and min_num arguments to limit the number of inline itemsmax_num is reached (Salvador Faria)get_context method for passing additional variables to the block templatefirst_published_at and latest_revision_created_at fields on page models are now available as filter fields on search queriespage variable to the template (e.g. because they override the serve method)PageManager.sibling_of(page) and PageManager.not_sibling_of(page) now default to inclusive (i.e. page is considered a sibling of itself), for consistency with other sibling methods_ query parameter used by jQuery for cache-bustingspecific() method on PageQuerySet
Major features:
Minor features:
{% image %} tag now supports filters on the image variable, e.g. {% image primary_img|default:secondary_img width-500 %}wagtail.wagtailsearch.backends.elasticsearch), rather than a specific class (wagtail.wagtailsearch.backends.elasticsearch.ElasticSearch)descendant_of filter to the APIupdate_index task now indexes objects in batches of 1000, to indicate progress and avoid excessive memory usePageChooserPanel now supports passing a list (or tuple) of accepted page typesSnippetChooserPanel can now be omitted, or passed as a model name string rather than a model classself template variable to accommodate Jinja as a templating engine: page for pages, field_panel for field panels / edit handlers, and value for blocksis_creatable; pages that are abstract Django models are automatically made non-creatableBug fixes:
wagtailimages module is now compatible with remote storage backends that do not allow reopening closed filesid fieldwagtailfrontendcache module's HTTP backend has been rewritten to reliably direct requests to the configured cache hostnamesearch operations when using the database search backend now correctly preserves additional properties of the original query, such as prefetch_related / select_relatedget_context methodspecific() method on PageQuerySet, to return pages as their most specific typeATOMIC_REBUILD flag to keep the existing index available while the update_index task is runningwagtail.wagtailsearch.index.Indexed now appear as searchable within the Wagtail admin{% image %} tag now supports filters on the image variable, e.g. {% image primary_img|default:secondary_img width-500 %}wagtail.wagtailsearch.backends.elasticsearch), rather than a specific class (wagtail.wagtailsearch.backends.elasticsearch.ElasticSearch)descendant_of filter to the API (Michael Fillier)update_index task now indexes objects in batches of 1000, to indicate progress and avoid excessive memory usePageChooserPanel now supports passing a list (or tuple) of accepted page typesSnippetChooserPanel can now be omitted, or passed as a model name string rather than a model class (Joss Ingram)self template variable to accommodate Jinja as a templating engine: page for pages, field_panel for field panels / edit handlers, and value for blocksis_creatable; pages that are abstract Django models are automatically made non-creatablewagtailfrontendcache module's HTTP backend has been rewritten to reliably direct requests to the configured cache hostnameZeroDivisionError or "tile cannot extend outside image"search operations when using the database search backend now correctly preserves additional properties of the original query, such as prefetch_related / select_relatedget_context method (Christoph Lipp)Implemented the specific() method on PageQuerySet, to return pages as their most specific type
specific() method on PageQuerySet, to return pages as their most specific typeATOMIC_REBUILD flag to keep the existing index available while the update_index task is runningwagtail.wagtailsearch.index.Indexed now appear as searchable within the Wagtail admin{% image %} tag now supports filters on the image variable, e.g. {% image primary_img|default:secondary_img width-500 %}wagtail.wagtailsearch.backends.elasticsearch), rather than a specific class (wagtail.wagtailsearch.backends.elasticsearch.ElasticSearch)descendant_of filter to the API (Michael Fillier)update_index task now indexes objects in batches of 1000, to indicate progress and avoid excessive memory usePageChooserPanel now supports passing a list (or tuple) of accepted page typesSnippetChooserPanel can now be omitted, or passed as a model name string rather than a model class (Joss Ingram)self template variable to accommodate Jinja as a templating engine: page for pages, field_panel for field panels / edit handlers, and value for blocksis_creatable; pages that are abstract Django models are automatically made non-creatablewagtailfrontendcache module's HTTP backend has been rewritten to reliably direct requests to the configured cache hostnamesearch operations when using the database search backend now correctly preserves additional properties of the original query, such as prefetch_related / select_relatedget_context method (Christoph Lipp)StreamField, a model field for freeform page content
Major features:
Minor features:
django.contrib.auth.admin.login will no longer lead to Wagtails login view (making it easier to have front end views)LOGIN_URL and LOGIN_REDIRECT_URL settingsdocument_served signal now correctly passes the Document class as sender and the document as instancefirst_published_atregister_rich_text_embed_handler and register_rich_text_link_handler for customising link / embed handling within rich text fieldsconstruct_homepage_summary_items for customising the site summary panel on the admin homepageconstruct_wagtail_edit_bird hook to construct_wagtail_userbarAUTO_UPDATE flag to search backend settings to enable/disable automatically updating the search index on model changeswith_metaclass is now imported from Django's bundled copy of the six library, to avoid errors on Mac OS X from an outdated system copy of the library being importedAdjusted deprecation warnings for features deprecated in 1.0, to indicate that they will be removed in 1.2
Changes since 1.0rc1:
Users without usernames can now be created and edited in the admin interface (Tim Heap)
Changes since Beta 2:
AUTO_UPDATE flag to search backend settings to enable/disable automatically updating the search index on model changeswith_metaclass is now imported from Django's bundled copy of the six library, to avoid errors on Mac OS X from an outdated system copy of the library being importedAdded Wagtail API, a module for creating a RESTful API for your content
Changes since Beta 1:
construct_homepage_summary_items for customising the site summary panel on the admin homepageconstruct_wagtail_edit_bird hook to construct_wagtail_userbarAdded StreamField, a model field for freeform page content
django.contrib.auth.admin.login will no longer lead to Wagtails login view (making it easier to have front end views)LOGIN_URL and LOGIN_REDIRECT_URL settingsdocument_served signal now correctly passes the Document class as sender and the document as instancefirst_published_atregister_rich_text_embed_handler and register_rich_text_link_handler for customising link / embed handling within rich text fields(re-release of 0.8.9 due to packaging issues)
(re-release of 0.8.9 due to packaging issues)
When copying a page, IDs of child objects within page revision records were not remapped to the new objects; this would cause those objects to be lost
Fix: Formbuilder no longer raises TypeError when submitting unchecked boolean field
Fix: wagtailfrontendcache no longer tries to purge pages that are not in a site
Translations updated, including new translations for Czech, Italian and Japanese
Fix: On adding a new page, the available page types are ordered by the displayed verbose name
BASE_URL setting for the reset URLFix: It is no longer possible to have the explorer and settings menu open at the same time
Removes a 0.9 feature that found its way into the 0.8 branch ahead of its time.
Removes a 0.9 feature that found its way into the 0.8 branch ahead of its time.
Added missing jQuery UI sprite files, causing collectstatic to throw errors (most reported on Heroku)
Fixed a regression where images would fail to save when feature detection is active
Added logging for page operations
wagtail.wagtailsearch and wagtail.contrib.wagtailfrontendcache are now automatically registered when using Django 1.7 or above. (Tim Heap)Added interface for choosing focal point on images
Added 'wagtail start' command and project template
Added support for face and feature detection on images using the OpenCV library
ElasticSearch backend now respects the backward-compatible URLS configuration setting, in addition to HOSTS
ElasticUtils/pyelasticsearch swapped for elasticsearch-py
search method to PageQuerySetget_indexed_objects allowing developers to customise which objects get added to the search indexmatch instead of query_string queriesFix: When constructing dummy requests for pages with no routable URL, fall back on a hostname from ALLOWED_HOSTS and finally 'localhost', to avoid 'In
Added toolbar to allow logged-in users to add and edit pages from the site front-end
Internationalisation of the admin backend
* Initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →