Django Blog Pro Documentation · v1.0.0
Django Blog Pro is a complete, production-grade Django blogging platform with multi-author support, newsletters, analytics, comments, SEO, and everything you need to run a professional blog.
| Tool | Version | Purpose |
|---|---|---|
| Python | 3.10+ | Runtime |
| PostgreSQL | 14+ | Database (required for full-text search) |
| Redis | 7+ | Caching & task queue |
| Node.js | 18+ | Frontend assets (optional) |
unzip django-blog-pro.zip
cd django-blog-pro
python -m venv venv && source venv/bin/activate
pip install -r requirements/development.txt
cp .env.example .env
Edit .env with your settings:
SECRET_KEY=your-unique-secret-key-here
DEBUG=True
DATABASE_URL=sqlite:///db.sqlite3
REDIS_URL=redis://localhost:6379/0
python manage.py migrate
python manage.py seed_blog # Load demo content
python manage.py createsuperuser # Create admin account
python manage.py runserver
Visit:
- Blog: http://127.0.0.1:8000
- Admin Panel: http://127.0.0.1:8000/admin/
- API Docs: http://127.0.0.1:8000/api/docs/
seed_blog, create_search_index, cache_warmdocker compose up --build
docker compose exec web python manage.py migrate
docker compose exec web python manage.py seed_blog
docker compose exec web python manage.py createsuperuser
docker compose -f docker-compose.prod.yml up --build -d
docker compose -f docker-compose.prod.yml exec web python manage.py migrate
docker compose -f docker-compose.prod.yml exec web python manage.py collectstatic --noinput
createdb blogpro_db
Update .env:
DATABASE_URL=postgres://user:password@localhost:5432/blogpro_db
Enable full-text search:
python manage.py create_search_index
Emails print to console by default.
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.mailgun.org
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=postmaster@yourdomain.com
EMAIL_HOST_PASSWORD=your-smtp-password
DEFAULT_FROM_EMAIL=blog@yourdomain.com
Supported: Mailgun, SendGrid, Amazon SES, Postmark, any SMTP provider.
Celery handles newsletter sending, image optimization, search index updates, and analytics aggregation.
celery -A config worker -l info # Start worker
celery -A config beat -l info # Start scheduler
celery -A config worker -B -l info # Both (dev only)
pytest # Run all tests
pytest --cov=apps --cov-report=html # With coverage report
pytest tests/blog/ # Specific app tests
python manage.py check --deploy
python manage.py collectstatic --noinput
python manage.py migrate
DEBUG=False
SECRET_KEY=<strong-random-key>
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com
DATABASE_URL=postgres://user:pass@host:5432/dbname
REDIS_URL=redis://host:6379/0
SECURE_SSL_REDIRECT=True
gunicorn config.wsgi:application --bind 0.0.0.0:8000 --workers 3 --timeout 120
django-blog-pro/
├── apps/
│ ├── blog/ # Core blog (posts, categories, tags, series)
│ ├── authors/ # Multi-author profiles
│ ├── comments/ # Threaded comment system
│ ├── newsletter/ # Subscriber & campaign management
│ ├── analytics/ # View tracking & reading stats
│ ├── search/ # Full-text search engine
│ ├── reactions/ # Post reactions
│ ├── bookmarks/ # User bookmarks
│ └── core/ # Shared utilities
├── config/
│ ├── settings/ # Split settings (base, dev, prod, test)
│ ├── urls.py
│ ├── celery.py
│ └── wsgi.py
├── templates/ # Django templates
├── static/ # CSS, JS, images
├── requirements/ # Pip requirements (base, dev, prod)
├── docker/ # Docker configs
├── tests/ # Test suite
└── docs/ # Extended documentation
| Variable | Default | Description |
|---|---|---|
SECRET_KEY |
— | Django secret key (required) |
DEBUG |
False |
Debug mode |
DATABASE_URL |
sqlite:///db.sqlite3 |
Database connection |
REDIS_URL |
redis://localhost:6379/0 |
Redis for caching & Celery |
BLOG_POSTS_PER_PAGE |
12 |
Posts per page |
BLOG_COMMENTS_ENABLED |
True |
Enable comments |
BLOG_COMMENTS_MODERATION |
True |
Moderate comments before publishing |
BLOG_NEWSLETTER_ENABLED |
True |
Enable newsletter |
BLOG_ANALYTICS_ENABLED |
True |
Enable view tracking |
USE_S3 |
False |
Use AWS S3 for media storage |
SENTRY_DSN |
— | Sentry error tracking |
"No module named 'psycopg2'" — Install with pip install psycopg2-binary
"Redis connection refused" — Check Redis is running: redis-cli ping
Static files not loading — Run python manage.py collectstatic --noinput
Search not working — Requires PostgreSQL. Run python manage.py create_search_index
Images not uploading — Check media directory permissions: chmod -R 755 media/
Free updates for 12 months from purchase.
Django Blog Pro v1.0.0 — DjangoZen.com
Product: Django Blog Pro
Type: Digital Product
Version: 1.0.0
Updated: Mar 24, 2026