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).
Metadata
Release files for django-classified 1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_classified-1.3.tar.gz | 101.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_classified-1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 235.3 kB
Release files / django_classified-1.3.tar.gz
| Download URL | django_classified-1.3.tar.gz |
|---|---|
| Size | 101.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32a049a4e7c810471f32263184e01f32e176958fbc69b9d026fcc31ef888838b
|
|
BLAKE2b-256 checksum How to use checksums |
c1125ab2c52409bbac73ec607223a4c341375602d9e55d4f589a609baca2dced
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 25, 2026.
Transparency logRelease files / django_classified-1.3-py3-none-any.whl
| Download URL | django_classified-1.3-py3-none-any.whl |
|---|---|
| Size | 133.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
15c5d242c5b6fedaf4d3db844463f7c863b4af336e8a6bccb0236718c13e507d
|
|
BLAKE2b-256 checksum How to use checksums |
019665cfd1b85070169baf600ba733197458d0bd551c68c9b13c997d1c61601f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 25, 2026.
Transparency log