django-simple-metatags

The django application allows to add title, keywords and description meta tags to site's pages.


License
MIT
Install
pip install django-simple-metatags==2.0.3

Documentation

django-simple-metatags

https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336

The django application allows to add title, keywords and description meta tags to site's pages.

Features

  • Attaching meta tags to model instances
  • Attaching meta tags to URL paths
  • Caching
  • Integration with the django-modeltranslation application

Installation

pip install django-simple-metatags

Configuration

  1. Add 'metatags' to your INSTALLED_APPS:
INSTALLED_APPS = (
    # ...
    'metatags',
)
  1. Run the migrate management command:
python manage.py migrate metatags
  1. Customize model admin classes:

To be able to attach meta tags to a model instance you should slightly adjust a model admin class.

The first way by adding the MetaTagInline class in inlines sequence:

from metatags.admin import MetaTagInline


class CustomModelAdmin(admin.ModelAdmin):
    # ...
    inlines = (MetaTagInline,)

The second way by using MetaTagAbleMixin:

from metatags.admin import MetaTagAbleMixin


class CustomModelAdmin(MetaTagAbleMixin, admin.ModelAdmin):
    # ...

The third and way by using MetaTagAbleModelAdmin:

from metatags.admin import MetaTagAbleModelAdmin


class CustomModelAdmin(MetaTagAbleModelAdmin):
    # ...

Warning

Meta tags can be attached only to models that has auto-incrementing or positive integer primary key.

Note

Also django-simple-metatags application has an own model admin class that allows to attach meta tags to URL paths.

  1. Load the metatags template library and add the include_metatags template tag in template.

Add the include_metatags template tag with the model_instance argument to use meta tags attached to a model instance.

{% load metatags %}
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    {% include_metatags object default_title='Foo' default_keywords='Foo, bar, baz' %}
</head>

Note

The model_instance attribute is just an instance of arbitrary model like User, FlatPage, etc. with attached via Django's admin meta tags. A variable than contains a model instance must be included in the template context.

Add the include_metatags without the model_instance argument to use meta tags attached to an URL path.

{% load metatags %}
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    {% include_metatags default_title='Foo' default_keywords='Foo, bar, baz' %}
</head>

Arguments of include_metatags template tag

All arguments are optional.

model_instance - A model instance with attached meta tags. Defaults to None.

default_title - A default title of page. Defaults to ''.

default_keywords - Default keywords of page. Defaults to ''.

default_description - Default description of page. Defaults to ''.

Caching

Since version 2.0.0 application gained caching support. See settings section for more details.

Settings

METATAGS_CACHE_ENABLED - Enables meta tags caching to minimize database access. Defaults to False.

Note

Django's caching system must be configured.

METATAGS_CACHE_ALIAS - A name of cache backend used by meta tags caching feature. Defaults to default.

METATAGS_CACHE_TIMEOUT - Timeout in seconds to use for meta tags caching. If value set up to None cached meta tags never expire. Defaults to None.

Note

Value of 0 causes meta tags to immediately expire.

Management command

resetmetatagscache - Removes all cached meta tags.