Project/Page Metadata and SEO#

Pegasus comes with some built in tools and best-practices for setting page-level metadata (e.g. title, image URL, etc.).

The PROJECT_METADATA setting#

Your Pegasus project will ship with a settings.py variable called PROJECT_METADATA with the following values:

PROJECT_METADATA = {
    'NAME': '<your app name>',
    'URL': '<your app domain>',
    'DESCRIPTION': '<your app description>',
    'IMAGE': 'https://upload.wikimedia.org/wikipedia/commons/2/20/PEO-pegasus_black.svg',
    'KEYWORDS': 'SaaS, django',
    'CONTACT_EMAIL': '<your email>',
}

This information will be available in every view under the variable name project_meta. Out of the box, the values are used in a number of places, though can be overridden/modified at the view level.

Page Titles#

The default title for your pages will be your project name and description from PROJECT_METADATA.

If you want to add a custom page title, you can pass a page_title context variable to the template.

For example:

def my_new_view(request):
    return render('a/template.html', {'page_title': 'My New Page'})

Pegasus will then set your title to be My New Page | <project name>.

If you’d like to change the way the title is formatted (e.g. remove the project name), you can change that behavior in web.templatetags.meta_tags.get_title.

In Pegasus versions after 2022.4 you can also override the title directly in a template by overriding the page_title block.

For example:

{% block page_title %}This title will be used instead of the Pegasus versions{% endblock %}

Sitemaps#

As of version 2022.6, Pegasus will automatically generate a basic sitemap for your site at sitemap.xml. Out of the box, the sitemap will only contain your application’s homepage, but can be readily extended by adding URLs in apps/web/sitemaps.py.

If you have enabled Wagtail, your sitemap will also include any content managed by Wagtail. Make sure you properly set the hostname in your Wagtail site.