Simple SEO Module for Django
Project description
Simple seo backend for Django. Inspired by django-seo ( https://github.com/willhardy/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-linuo, 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
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.
Installation
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+https://github.com/danigosa/django-simple-seo.git
Add to your settings:
INSTALLED_APPS = (
...
'simple_seo',
...
)
Requeriments
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
register(MyMetadata)
2. Synchronize your DB
Synchronize your database with syncdb or migrate depending on your case:
$ ./manage.py syncdb
3. Register your model for administration
Add this lines to your admin.py:
from simple_seo.admin import BaseMetadataAdmin
from django.contrib import admin
from .models import MyMetadata
class MyMetadataAdmin(BaseMetadataAdmin):
pass
admin.site.register(MyMetadata, 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>
<html>
<head lang="en">
<meta charset="UTF-8">
{% view_metadata %}
</head>
<body>
TEST
</body>
</html>
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
register(MyMetadata)
7. App 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. Contribute!
To execute the testapp you only need vagrant and virtualbox installed, once you got them just execute:
$ vagrant up
$ vagrant ssh
Then add to the root of the project your local_settings.py for everything your need, for instance adding debug toolbar local setting:
INTERNAL_IPS = ('10.0.2.2', )
You can find more info of how to develop with remote vagrant servers and the awesome Pycharm IDE here: http://codeispoetry.me/index.php/remote-server-with-pycharm-and-vagrant/
Changelog
Version 0.2.1
Bufixes
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.