A focused Django package providing essential extensions for image management, subdomain redirects, and SEO optimization with advanced admin interface and middleware support.
- ImageExtension: Generic image management with support for multiple image types, ordering, and featured images
- SubdomainRedirect: Flexible subdomain redirect system with support for different redirect types
- SEOMixin: Mixin-based SEO system for easy meta tag management across any Django model
- Advanced Admin Interface: Enhanced Django admin with dynamic object selectors, image previews, and validation
- Middleware Support: Built-in middleware for automatic subdomain redirects and admin IP restrictions
- Custom Widgets: Specialized form widgets for better user experience
pip install git+https://github.com/TUSKION/django-extensions
- Add to your
INSTALLED_APPS
:
INSTALLED_APPS = [
# ... other apps
'essential_extensions',
]
- Add middleware to your
MIDDLEWARE
:
MIDDLEWARE = [
# ... other middleware
'essential_extensions.middleware.SubdomainRedirectMiddleware',
'essential_extensions.middleware.AdminIPRestrictionMiddleware', # Optional
]
- Run migrations:
python manage.py migrate
- The admin interface is automatically registered and ready to use.
from essential_extensions.models import ImageExtension
# Create an image extension for a game
game = Game.objects.get(id=1)
image = ImageExtension.objects.create(
content_object=game,
image_type='screenshot',
image='path/to/image.jpg',
title='Game Screenshot',
order=1,
is_featured=True
)
from essential_extensions.models import SubdomainRedirect
# Redirect subdomain to a specific page
redirect = SubdomainRedirect.objects.create(
subdomain='blog',
redirect_type='full',
redirect_path='/blog/',
is_active=True
)
from essential_extensions.mixins import SEOMixin
class GameProject(models.Model, SEOMixin):
title = models.CharField(max_length=200)
description = models.TextField()
_seo = {
'title': 'title',
'description': 'description',
'author': 'GhostJam Team',
}
# settings.py
# Main domain for subdomain redirects
MAIN_DOMAIN = 'example.com'
# Admin IP restriction
ADMIN_IP_RESTRICTION_ENABLED = True
ADMIN_ALLOWED_IPS = ['127.0.0.1', '::1']
ADMIN_ALLOWED_NETWORKS = ['192.168.1.0/24']
# SEO defaults
SEO_DEFAULTS = {
'description': 'GhostJam - Indie Game Development Community',
'keywords': ['indie games', 'game development'],
'author': 'GhostJam Team',
'robots': 'index, follow',
}
For detailed documentation on each component, see:
- ImageExtension - Complete guide to image management
- SubdomainRedirect - Subdomain redirect system
- SEOMixin - SEO optimization and meta tag management
- Middleware - Admin IP restrictions and subdomain handling
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details.
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions