A full-featured blog website built with Django 5.2.4, featuring user authentication, blog management, comments, tags, categories, and social features like following other users.
- Custom User Model with profile pictures
- User registration and authentication
- Profile management (update info, change password, profile picture)
- Follow/Unfollow system
- User information pages showing posts and followers
- Rich Text Editor integration with CKEditor
- Create, read, update, and delete blog posts
- Blog banners/images
- Categories and tags system
- Search functionality (by title, category, author, tags)
- Comment system with nested replies
- Like system for posts
- Pagination for blog listings
- Related posts suggestions
- Home page with featured blog carousel
- Blog listing page with pagination
- Category-based filtering
- Tag-based filtering
- Search functionality
- Sidebar with recent posts, categories, and tag clouds
- Backend: Django 5.2.4
- Database: SQLite3 (development)
- Rich Text Editor: django-ckeditor 6.7.3
- Image Processing: Pillow 11.3.0
- Frontend: Bootstrap, jQuery, Owl Carousel
- Authentication: Django built-in auth system
- Clone the repository
git clone <your-repo-url>
cd blog_website- Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies
pip install -r requirements.txt- Run migrations
python manage.py migrate- Create a superuser
python manage.py createsuperuser- Collect static files
python manage.py collectstatic- Run the development server
python manage.py runserver- Visit
http://127.0.0.1:8000/in your browser
blog_website/
├── blog_website/ # Project settings
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── blogs/ # Blog app
│ ├── models.py # Blog, Category, Tags, Comment, Reply models
│ ├── views.py # Blog views
│ ├── forms.py # Blog forms
│ └── urls.py
├── user_profile/ # User management app
│ ├── models.py # Custom User and Follow models
│ ├── views.py # Auth and profile views
│ ├── forms.py # User forms
│ └── managers.py # Custom user manager
├── templates/ # HTML templates
├── assets/ # Static files (CSS, JS, images)
└── media/ # User uploaded files
- Extended from Django's AbstractUser
- Additional fields:
profile_image,followers - Custom manager for user creation
- Fields:
title,slug,banner,description,category,tags,user,like - Auto-generates slug from title
- Rich text description using CKEditor
- Simple categorization for blogs
- Auto-generates slug
- Many-to-many relationship with blogs
- Auto-generates slug
- Hierarchical comment system
- Comments on blogs, replies on comments
- User following system
- Track followers and following relationships
Currently set to DEBUG = False for production. For development, change in settings.py:
DEBUG = TrueALLOWED_HOSTS = ["localhost", "127.0.0.1", "learnlog.pythonanywhere.com"]- Media files are stored in
media/directory - Profile images:
media/profile_images/ - Blog banners:
media/blog_banners/
Access the admin panel at /admin/ with your superuser credentials to:
- Manage users
- Create/edit categories and tags
- Moderate blogs and comments
- View follow relationships
/- Home page/blogs/- All blogs with pagination/blog_details/<slug>/- Individual blog post/search_blogs/- Search results/category_blogs/<slug>/- Category-filtered blogs/tag_blogs/<slug>/- Tag-filtered blogs
/login/- User login/register/- User registration/logout/- User logout/profile/- User profile management/my_blogs/- User's own blogs/add_blog/- Create new blog/update_blog/<slug>/- Edit blog/view_user_information/<username>/- Public user profile
- Login to your account
- Navigate to "Add Blog" from your profile
- Fill in the blog details:
- Title
- Category
- Description (with rich text formatting)
- Banner image
- Tags (comma-separated)
- Click "Add" to publish
- Go to "My Blogs" from your profile
- View all your published blogs
- Edit or delete any blog post
- Track comments and engagement
- Visit any user's profile by clicking their username
- Click "Follow" to follow them
- View their posts and updates
- Unfollow anytime from their profile
The project is configured for deployment on PythonAnywhere:
- Static files served from
/static/ - Media files served from
/media/ - SECRET_KEY should be moved to environment variables for production
- Database should be upgraded to PostgreSQL for production
- Change the SECRET_KEY in settings.py
- Set DEBUG = False
- Configure proper ALLOWED_HOSTS
- Use environment variables for sensitive data
- Set up HTTPS
- Configure proper CSRF settings
Issue: Static files not loading
python manage.py collectstatic --clearIssue: Database errors
python manage.py migrate --run-syncdbIssue: CKEditor not appearing
- Ensure
{{form.media}}is in your template - Check that static files are properly configured
- Email notifications for comments
- Blog post drafts
- Social media sharing
- Blog post scheduling
- Advanced analytics
- Multiple image uploads per blog
- Video embedding support
- Export blogs to PDF
Feel free to submit issues and enhancement requests!
Copyright 2025 - All rights reserved
- Facebook: mdnaimurrahman36
- LinkedIn: mdnaimurrahman36
Built with ❤️ using Django