Settings¶
Wagtail makes use of the following settings, in addition to Django’s core settings:
Site Name¶
WAGTAIL_SITE_NAME = 'Stark Industries Skunkworks'
This is the human-readable name of your Wagtail install which welcomes users upon login to the Wagtail admin.
Append Slash¶
# Don't add a trailing slash to Wagtail-served URLs
WAGTAIL_APPEND_SLASH = False
Similar to Django’s APPEND_SLASH
, this setting controls how Wagtail will handle requests that don’t end in a trailing slash.
When WAGTAIL_APPEND_SLASH
is True
(default), requests to Wagtail pages which omit a trailing slash will be redirected by Django’s CommonMiddleware
to a URL with a trailing slash.
When WAGTAIL_APPEND_SLASH
is False
, requests to Wagtail pages will be served both with and without trailing slashes. Page links generated by Wagtail, however, will not include trailing slashes.
Note
If you use the False
setting, keep in mind that serving your pages both with and without slashes may affect search engines’ ability to index your site. See this Google Webmaster Blog post for more details.
Search¶
WAGTAILSEARCH_BACKENDS = {
'default': {
'BACKEND': 'wagtail.search.backends.elasticsearch2',
'INDEX': 'myapp'
}
}
Define a search backend. For a full explanation, see Backends.
WAGTAILSEARCH_RESULTS_TEMPLATE = 'myapp/search_results.html'
WAGTAILSEARCH_RESULTS_TEMPLATE_AJAX = 'myapp/includes/search_listing.html'
Override the templates used by the search front-end views.
WAGTAILSEARCH_HITS_MAX_AGE = 14
Set the number of days (default 7) that search query logs are kept for; these are used to identify popular search terms for promoted search results. Queries older than this will be removed by the search_garbage_collect command.
Embeds¶
Wagtail supports generating embed code from URLs to content on an external providers such as Youtube or Twitter. By default, Wagtail will fetch the embed code directly from the relevant provider’s site using the oEmbed protocol. Wagtail has a builtin list of the most common providers.
The embeds fetching can be fully configured using the WAGTAILEMBEDS_FINDERS
setting. This is fully documented in Configuring embed “finders”.
WAGTAILEMBEDS_RESPONSIVE_HTML = True
Adds class="responsive-object"
and an inline padding-bottom
style to embeds,
to assist in making them responsive. See Responsive Embeds for details.
New in version 2.8: The WAGTAILEMBEDS_RESPONSIVE_HTML
setting was added.
Dashboard¶
WAGTAILADMIN_RECENT_EDITS_LIMIT = 5
This setting lets you change the number of items shown at ‘Your most recent edits’ on the dashboard.
WAGTAILADMIN_USER_LOGIN_FORM = 'users.forms.LoginForm'
Allows the default LoginForm
to be extended with extra fields.
WAGTAIL_GRAVATAR_PROVIDER_URL = '//www.gravatar.com/avatar'
If a user has not uploaded a profile picture, Wagtail will look for an avatar linked to their email address on gravatar.com. This setting allows you to specify an alternative provider such as like robohash.org, or can be set to None
to disable the use of remote avatars completely.
WAGTAIL_MODERATION_ENABLED = True
Changes whether the Submit for Moderation button is displayed in the action menu.
Images¶
WAGTAILIMAGES_IMAGE_MODEL = 'myapp.MyImage'
This setting lets you provide your own image model for use in Wagtail, which might extend the built-in AbstractImage
class or replace it entirely.
WAGTAILIMAGES_MAX_UPLOAD_SIZE = 20 * 1024 * 1024 # i.e. 20MB
This setting lets you override the maximum upload size for images (in bytes). If omitted, Wagtail will fall back to using its 10MB default value.
WAGTAILIMAGES_MAX_IMAGE_PIXELS = 128000000 # i.e. 128 megapixels
This setting lets you override the maximum number of pixels an image can have. If omitted, Wagtail will fall back to using its 128 megapixels default value. The pixel count takes animation frames into account - for example, a 25-frame animation of size 100x100 is considered to have 100 * 100 * 25 = 250000 pixels.
WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = True
This setting enables feature detection once OpenCV is installed, see all details on the Feature Detection documentation.
WAGTAILIMAGES_INDEX_PAGE_SIZE = 20
Specifies the number of images per page shown on the main Images listing in the Wagtail admin.
WAGTAILIMAGES_USAGE_PAGE_SIZE = 20
Specifies the number of items per page shown when viewing an image’s usage (see WAGTAIL_USAGE_COUNT_ENABLED).
WAGTAILIMAGES_CHOOSER_PAGE_SIZE = 12
Specifies the number of images shown per page in the image chooser modal.
Documents¶
WAGTAILDOCS_SERVE_METHOD = 'redirect'
Determines how document downloads will be linked to and served. Normally, requests for documents are sent through a Django view, to perform permission checks (see Image / document permissions) and potentially other housekeeping tasks such as hit counting. To fully protect against users bypassing this check, it needs to happen in the same request where the document is served; however, this incurs a performance hit as the document then needs to be served by the Django server. In particular, this cancels out much of the benefit of hosting documents on external storage, such as S3 or a CDN.
For this reason, Wagtail provides a number of serving methods which trade some of the strictness of the permission check for performance:
'direct'
- links to documents point directly to the URL provided by the underlying storage, bypassing the Django view that provides the permission check. This is most useful when deploying sites as fully static HTML (e.g. using wagtail-bakery or Gatsby).'redirect'
- links to documents point to a Django view which will check the user’s permission; if successful, it will redirect to the URL provided by the underlying storage to allow the document to be downloaded. This is most suitable for remote storage backends such as S3, as it allows the document to be served independently of the Django server. Note that if a user is able to guess the latter URL, they will be able to bypass the permission check; some storage backends may provide configuration options to generate a random or short-lived URL to mitigate this.'serve_view'
- links to documents point to a Django view which both checks the user’s permission, and serves the document. Serving will be handled by django-sendfile, if this is installed and supported by your server configuration, or as a streaming response from Django if not. When using this method, it is recommended that you configure your webserver to disallow serving documents directly from their location underMEDIA_ROOT
, as this would provide a way to bypass the permission check.
If WAGTAILDOCS_SERVE_METHOD
is unspecified or set to None
, the default method is 'redirect'
when a remote storage backend is in use (i.e. one that exposes a URL but not a local filesystem path), and 'serve_view'
otherwise. Finally, some storage backends may not expose a URL at all; in this case, serving will proceed as for 'serve_view'
.
Password Management¶
WAGTAIL_PASSWORD_MANAGEMENT_ENABLED = True
This specifies whether users are allowed to change their passwords (enabled by default).
WAGTAIL_PASSWORD_RESET_ENABLED = True
This specifies whether users are allowed to reset their passwords. Defaults to the same as WAGTAIL_PASSWORD_MANAGEMENT_ENABLED
.
WAGTAILUSERS_PASSWORD_ENABLED = True
This specifies whether password fields are shown when creating or editing users through Settings -> Users (enabled by default). Set this to False (along with WAGTAIL_PASSWORD_MANAGEMENT_ENABLED
and WAGTAIL_PASSWORD_RESET_ENABLED
) if your users are authenticated through an external system such as LDAP.
WAGTAILUSERS_PASSWORD_REQUIRED = True
This specifies whether password is a required field when creating a new user. True by default; ignored if WAGTAILUSERS_PASSWORD_ENABLED
is false. If this is set to False, and the password field is left blank when creating a user, then that user will have no usable password; in order to log in, they will have to reset their password (if WAGTAIL_PASSWORD_RESET_ENABLED
is True) or use an alternative authentication system such as LDAP (if one is set up).
WAGTAIL_EMAIL_MANAGEMENT_ENABLED = True
This specifies whether users are allowed to change their email (enabled by default).
Email Notifications¶
WAGTAILADMIN_NOTIFICATION_FROM_EMAIL = 'wagtail@myhost.io'
Wagtail sends email notifications when content is submitted for moderation, and when the content is accepted or rejected. This setting lets you pick which email address these automatic notifications will come from. If omitted, Django will fall back to using the DEFAULT_FROM_EMAIL
variable if set, and webmaster@localhost
if not.
WAGTAILADMIN_NOTIFICATION_USE_HTML = True
Notification emails are sent in text/plain by default, change this to use HTML formatting.
WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS = False
Notification emails are sent to moderators and superusers by default. You can change this to exclude superusers and only notify moderators.
Wagtail update notifications¶
WAGTAIL_ENABLE_UPDATE_CHECK = True
For admins only, Wagtail performs a check on the dashboard to see if newer releases are available. This also provides the Wagtail team with the hostname of your Wagtail site. If you’d rather not receive update notifications, or if you’d like your site to remain unknown, you can disable it with this setting.
Private pages / documents¶
PASSWORD_REQUIRED_TEMPLATE = 'myapp/password_required.html'
This is the path to the Django template which will be used to display the “password required” form when a user accesses a private page. For more details, see the Private pages documentation.
DOCUMENT_PASSWORD_REQUIRED_TEMPLATE = 'myapp/document_password_required.html'
As above, but for password restrictions on documents. For more details, see the Private pages documentation.
Login page¶
The basic login page can be customised with a custom template.
WAGTAIL_FRONTEND_LOGIN_TEMPLATE = 'myapp/login.html'
Or the login page can be a redirect to an external or internal URL.
WAGTAIL_FRONTEND_LOGIN_URL = '/accounts/login/'
For more details, see the Setting up a login page documentation.
Case-Insensitive Tags¶
TAGGIT_CASE_INSENSITIVE = True
Tags are case-sensitive by default (‘music’ and ‘Music’ are treated as distinct tags). In many cases the reverse behaviour is preferable.
Multi-word tags¶
TAG_SPACES_ALLOWED = False
Tags can only consist of a single word, no spaces allowed. The default setting is True
(spaces in tags are allowed).
Tag limit¶
TAG_LIMIT = 5
Limit the number of tags that can be added to (django-taggit) Tag model. Default setting is None
, meaning no limit on tags.
Unicode Page Slugs¶
WAGTAIL_ALLOW_UNICODE_SLUGS = True
By default, page slugs can contain any alphanumeric characters, including non-Latin alphabets. Set this to False to limit slugs to ASCII characters.
Auto update preview¶
WAGTAIL_AUTO_UPDATE_PREVIEW = False
When enabled, data from an edited page is automatically sent to the server on each change, even without saving. That way, users don’t have to click on “Preview” to update the content of the preview page. However, the preview page tab is not refreshed automatically, users have to do it manually. This behaviour is disabled by default.
Custom User Edit Forms¶
See Custom user models.
WAGTAIL_USER_EDIT_FORM = 'users.forms.CustomUserEditForm'
Allows the default UserEditForm
class to be overridden with a custom form when
a custom user model is being used and extra fields are required in the user edit form.
WAGTAIL_USER_CREATION_FORM = 'users.forms.CustomUserCreationForm'
Allows the default UserCreationForm
class to be overridden with a custom form when
a custom user model is being used and extra fields are required in the user creation form.
WAGTAIL_USER_CUSTOM_FIELDS = ['country']
A list of the extra custom fields to be appended to the default list.
Usage for images, documents and snippets¶
WAGTAIL_USAGE_COUNT_ENABLED = True
When enabled Wagtail shows where a particular image, document or snippet is being used on your site. This is disabled by default because it generates a query which may run slowly on sites with large numbers of pages.
A link will appear on the edit page (in the rightmost column) showing you how many times the item is used. Clicking this link takes you to the “Usage” page, which shows you where the snippet, document or image is used.
The link is also shown on the delete page, above the “Delete” button.
Note
The usage count only applies to direct (database) references. Using documents, images and snippets within StreamFields or rich text fields will not be taken into account.
Date and DateTime inputs¶
WAGTAIL_DATE_FORMAT = '%d.%m.%Y.'
WAGTAIL_DATETIME_FORMAT = '%d.%m.%Y. %H:%M'
Specifies the date and datetime format to be used in input fields in the Wagtail admin. The format is specified in Python datetime module syntax, and must be one of the recognised formats listed in the DATE_INPUT_FORMATS
or DATETIME_INPUT_FORMATS
setting respectively (see DATE_INPUT_FORMATS).
Time zones¶
Logged-in users can choose their current time zone for the admin interface in the account settings. If is no time zone selected by the user, then TIME_ZONE
will be used.
(Note that time zones are only applied to datetime fields, not to plain time or date fields. This is a Django design decision.)
The list of time zones is by default the common_timezones list from pytz.
It is possible to override this list via the WAGTAIL_USER_TIME_ZONES
setting.
If there is zero or one time zone permitted, the account settings form will be hidden.
WAGTAIL_USER_TIME_ZONES = ['America/Chicago', 'Australia/Sydney', 'Europe/Rome']
Admin languages¶
Users can choose between several languages for the admin interface
in the account settings. The list of languages is by default all the available
languages in Wagtail with at least 90% coverage. To change it, set WAGTAILADMIN_PERMITTED_LANGUAGES
:
WAGTAILADMIN_PERMITTED_LANGUAGES = [('en', 'English'),
('pt', 'Portuguese')]
Since the syntax is the same as Django LANGUAGES
, you can do this so users
can only choose between front office languages:
LANGUAGES = WAGTAILADMIN_PERMITTED_LANGUAGES = [('en', 'English'),
('pt', 'Portuguese')]
Static files¶
WAGTAILADMIN_STATIC_FILE_VERSION_STRINGS = False
Static file URLs within the Wagtail admin are given a version-specific query string of the form ?v=1a2b3c4d
, to prevent outdated cached copies of Javascript and CSS files from persisting after a Wagtail upgrade. To disable these, set WAGTAILADMIN_STATIC_FILE_VERSION_STRINGS
to False
.
API Settings¶
For full documenation on API configuration, including these settings, see Wagtail API v2 Configuration Guide documentation.
WAGTAILAPI_BASE_URL = 'http://api.example.com/'
Required when using frontend cache invalidation, used to generate absolute URLs to document files and invalidating the cache.
WAGTAILAPI_LIMIT_MAX = 500
Default is 20, used to change the maximum number of results a user can request at a time, set to None
for no limit.
WAGTAILAPI_SEARCH_ENABLED = False
Default is true, setting this to false will disable full text search on all endpoints.
WAGTAILAPI_USE_FRONTENDCACHE = True
Requires wagtailfrontendcache
app to be installed, inidicates the API should use the frontend cache.
Frontend cache¶
For full documenation on frontend cache invalidation, including these settings, see Frontend cache invalidator.
WAGTAILFRONTENDCACHE = {
'varnish': {
'BACKEND': 'wagtail.contrib.frontend_cache.backends.HTTPBackend',
'LOCATION': 'http://localhost:8000',
},
}
See documentation linked above for full options available.
Note
WAGTAILFRONTENDCACHE_LOCATION
is no longer the preferred way to set the cache location, instead set the LOCATION
within the WAGTAILFRONTENDCACHE
item.
WAGTAILFRONTENDCACHE_LANGUAGES = [l[0] for l in settings.LANGUAGES]
Default is an empty list, must be a list of languages to also purge the urls for each language of a purging url. This setting needs settings.USE_I18N
to be True
to work.
Rich text¶
WAGTAILADMIN_RICH_TEXT_EDITORS = {
'default': {
'WIDGET': 'wagtail.admin.rich_text.DraftailRichTextArea',
'OPTIONS': {
'features': ['h2', 'bold', 'italic', 'link', 'document-link']
}
},
'legacy': {
'WIDGET': 'wagtail.admin.rich_text.HalloRichTextArea',
}
}
Customise the behaviour of rich text fields. By default, RichTextField
and RichTextBlock
use the configuration given under the 'default'
key, but this can be overridden on a per-field basis through the editor
keyword argument, e.g. body = RichTextField(editor='legacy')
. Within each configuration block, the following fields are recognised:
WIDGET
: The rich text widget implementation to use. Wagtail provides two implementations:wagtail.admin.rich_text.DraftailRichTextArea
(a modern extensible editor which enforces well-structured markup) andwagtail.admin.rich_text.HalloRichTextArea
(deprecated; works directly at the HTML level). Other widgets may be provided by third-party packages.OPTIONS
: Configuration options to pass to the widget. Recognised options are widget-specific, but bothDraftailRichTextArea
andHalloRichTextArea
accept afeatures
list indicating the active rich text features (see Limiting features in a rich text field).
Page locking¶
New in version 2.8: The page locking logic has been changed so that pages are still editable by the users who locked them.
WAGTAILADMIN_GLOBAL_PAGE_EDIT_LOCK
can be set to True
to prevent users
from editing pages that they have locked.
Form builder¶
New in version 2.7.4/2.9.3: The WAGTAILFORMS_HELP_TEXT_ALLOW_HTML
option was added.
WAGTAILFORMS_HELP_TEXT_ALLOW_HTML = True
When true, HTML tags in form field help text will be rendered unescaped (default: False).
Warning
Enabling this option will allow editors to insert arbitrary HTML into the page, such as scripts that could allow the editor to acquire administrator privileges when another administrator views the page. Do not enable this setting unless your editors are fully trusted.