skip to navigation
skip to content

django-simple-seo 0.2.4

Simple SEO Module for Django

Latest Version: 1.0.3

Simple seo backend for Django. Inspired by django-seo ( ) but found it quite complex for the simple functionality it was intended for.

django-simple-seo aims to attach a model to your views with just 4 simple lines of code and everything configured by the admin.

What’s in django-simple-seo

  • Python 2.7, 3.2, 3.3, 3.4 and Django 1.4, 1.5 and 1.6
  • View Autodiscovering
  • Pure Django Models and Django Fields implementation, no metaclasses in action
  • Don’t reinvent the wheel: as long as they are django models you can use the goodies out there
  • i18n with django-vinaigrette, django-linguo, django-modeltranslation, etc.
  • Cache can be activated internally, but can also be used with johnny-cache, django-cache-machine, etc.
  • Easily extendible as far as it’s all about simple django models and fields
  • Out-of-the-box models for OpenGraph Facebook and Twitter tags
  • Support for UrlFields and ImageFields in admin
  • Test app included (.testapp)

What’s NOT in django-simple-seo

  • Only implements view based backend. Maybe in future releases it will include Model and Path backend like in DjangoSeo. The attribute ‘populate_from’ is neither implemented yet.


You can use pip like this:

$ pip install django-simple-seo

You can use pip with git master code instead of pypi version:

$ pip install git+

Add to your settings:



  • staticfiles
  • south (optional, if migrations)
  • admin (this includes auth, sessions and contenttypes)

1. Create your SEO Model

Create a model subclassing the classes BaseMetada(title, author, description, keywords), OpenGraphMetada(includes facebook tags) or AllMetadata(Facebook and Twitter). You must use register to register the model.

from simple_seo.models import AllMetadata
from simple_seo import register

class MyMetadata(AllMetadata):
    My Seo Model

# Register SEO Model

2. Synchronize your DB

Synchronize your database with syncdb or migrate depending on your case:

$ ./ syncdb

3. Register your model for administration

Add this lines to your

from simple_seo.admin import BaseMetadataAdmin
from django.contrib import admin
from .models import MyMetadata

class MyMetadataAdmin(BaseMetadataAdmin):
    pass, MyMetadataAdmin)

4. Add metadata for your views

Your views are autodiscovered for your convenience, create a metadata object for every view you want to administer

5. Add metadata to your template

Just include this template tag in your <head> section:

{% load simple_seo %}
<!DOCTYPE html>
<head lang="en">
    <meta charset="UTF-8">
    {% view_metadata %}

6. Extend/Override default behaviour

“I prefer to have images as URLs, not static files in my server”

Just override og_image attribute. You can find all base models in simple_seo.models, and all tag fields in simple_seo.fields:

from simple_seo.fields import URLMetaTagField, MetaTagField
from simple_seo.models import AllMetadata
from simple_seo import register

class MyMetadata(AllMetadata):
    My Seo Model
    og_image = URLMetaTagField(name="og:image")  # Overrides default og:image field
    another_meta_tag = MetaTagField(name="myvariable", max_length="25")  #  Creates a new custom meta tag for the views

# Register SEO Model

7. Cache Settings

Some settings are provided to enable caching directly in the app:

SEO_CACHE_PREFIX = getattr(settings, 'SEO_CACHE_PREFIX', 'simple_seo:')
SEO_CACHE_TIMEOUT = getattr(settings, 'SEO_CACHE_PREFIX', 60 * 60 * 24)
SEO_USE_CACHE = getattr(settings, 'SEO_CACHE_PREFIX', False)

8. Sample App

You have a complete sample app in testapp module in this repository.

9. Multilang i18n Support

As said before you can apply any 3rd party app for translating your models to django-simple-seo models. As an example, this is a complete model translated thanks to django-vinaigrette app:

Complete SEO model translated:

from simple_seo.models import AllMetadata
from simple_seo import register
import vinaigrette

class SiteMetadata(AllMetadata):
    Site Metadata

    class Meta:
        app_label = 'web'

# Register SEO Model


After that, just run ./ makemessages and you’re done. See django-vinaigrette for more details.

10. Contribute!

Then add to the root of the project your for everything your need, for instance adding debug toolbar local setting:


To execute the project with vagrant and virtualbox you can add this Vagrantfile and receipes to the local project and execute vagrant up:

After box is provisioned you’ll have an Ubuntu 14.04 with a Python 3.4 virtualenv.

You can find more info of how to develop with remote vagrant servers and the awesome Pycharm IDE here:


version 0.2.4

  • Bugfix error in print_tag that did not printed images and urls in templatetag

version 0.2.3

  • Bugfix error in caching when i18n activated

version 0.2.2

  • Bugfix errors in view autodiscover in some cases

Version 0.2.1

  • Bugfixes
  • Support for South Migrations

Version 0.2

  • Added support for namespaced views
  • Added support for ImageField based Image Metatags (og:image, twitter:image)
  • Added support for UrlField based URL Metatags (og:url, twitter:url)
  • Added more base classes to ease setup
File Type Py Version Uploaded on Size
django-simple-seo-0.2.4.tar.gz (md5) Source 2014-08-08 9KB