Django Classified
Features
- Item groups, categories and areas (for ex. Cities or Locations)
- Image
- upload multiple images per item
- generating preview (via sorl-thumbnail)
- display in a Bootstrap 5 modal with a carousel
- Search ability
- SEO
- SEO-friendly URLs, including non-Latin characters (Arabic, Cyrillic, etc.)
sitemap.xmlcovering both item and category pages- Self-referencing canonical URLs
- Per-page meta descriptions, including category pages
- JSON-LD structured data (
Product,BreadcrumbList) on item pages - Open Graph and Twitter card tags
robots.txt, andnoindexon search, profile and form pages<html lang>follows the active translation- RSS feed
- Google Analytics 4 (GA4) integration
- Caching of
robots.txtand the RSS feed - Translation
- Arabic
- Azerbaijani
- English
- French (thanks to Teolemon)
- German
- Polish
- Portuguese
- Russian
- Spanish (thanks to 4bimcad)
- Turkish (thanks to Mirat Can Bayrak)
- Help translate to other languages at Transifex
Requirements
- Python >=3.10
- Django >=5.2, <6.1
Design
- Bootstrap 5.3
- No external requests: no jQuery, no CDN, no webfonts. The only script is Bootstrap's own bundle, and typography uses system font stacks.
- Light and dark themes via Bootstrap's
data-bs-themeattribute - Accessible defaults: visible focus styles,
prefers-reduced-motionrespected, and a print stylesheet
All templates live under django_classified/templates/django_classified/ and can
be overridden by placing a file of the same name earlier on the template path.
Demo project
Demo project with user registration (via Email/Facebook) available here.
Installation
- Install app
pip install django-classified - Add
django_classifiedto theINSTALLED_APPS:
INSTALLED_APPS = [
# Default Django applications
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.staticfiles',
# Required by Django Classified
'django.contrib.sites',
'django.contrib.humanize',
'django.contrib.sitemaps',
# External applications required by Django Classified
'sorl.thumbnail',
# Django Classified
'django_classified',
]
- Add
SITE_IDtosettings.pyfile:
SITE_ID = 1
- Import
includein addition topathand addpath('', include('django_classified.urls', namespace='django_classified')),to the projecturls.pyfile:
from django.urls import path, include
urlpatterns = [
path('', include('django_classified.urls', namespace='django_classified')),
]
- Add
'django_classified.context_processors.common_values'to the settingsTEMPLATEScontext_processorslist:
TEMPLATES[0]['OPTIONS']['context_processors'].append('django_classified.context_processors.common_values')
Customization:
You can provide additional customization in settings.py
DCF_SITE_NAME- Site titleDCF_SITE_DESCRIPTION- Site descriptionDCF_ITEM_PER_USER_LIMIT- Max Items allowed per userDCF_SITEMAP_LIMIT- Sitemap items limitDCF_RSS_LIMIT- RSS feed items limitDCF_RELATED_LIMIT- Number of related items displayedDCF_ITEM_PER_PAGE- Number of items per pageDCF_LOGIN_TO_CONTACT- Hide contact information for unauthorized requestsDCF_DISPLAY_EMPTY_GROUPS- Display groups without items in the groups listDCF_DISPLAY_CREDITS- Show the "Powered by Django Classified" footer credit (default:True)DCF_CURRENCY- Site currency (default: 'USD')
Optional integrations
GOOGLE_ANALYTICS_PROPERTY_ID- Google Analytics 4 measurement ID (e.g. 'G-XXXXXXXXXX')GOOGLE_SITE_VERIFICATION_ID- Google Search Console verification codeFACEBOOK_APP_ID- Facebook App ID for Open Graph integration
Upgrading to 1.3
1.3 migrates the bundled templates from Bootstrap 3 to Bootstrap 5 and removes
several dependencies. If you use the templates as shipped, upgrading with
pip install -U django-classified is all you need. Otherwise:
- Remove
'bootstrapform'fromINSTALLED_APPS.django-bootstrap-formis no longer a dependency, so leaving it listed raisesModuleNotFoundError. Thebootstraptemplate filter is now provided by this package and keeps its name, so{% load i18n bootstrap %}still works. - If you override any bundled template, it is now Bootstrap 5 markup. The old
Bootstrap 3 classes (
form-group,control-label,help-block,pull-right,btn-default, glyphicons) are gone. - These static files were removed: jQuery, lightbox2, the Glyphicons fonts,
jumbotron-narrow.css, andbootstrap.min.css.map. Reference them from your own project if you still need them. - Item images now open in a Bootstrap modal with a carousel instead of lightbox2.
See changelog.txt for the full list.
Current Version
The current version is 1.3 (July 2026).