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).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_classified-1.3.tar.gz.
File metadata
- Download URL: django_classified-1.3.tar.gz
- Upload date:
- Size: 101.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32a049a4e7c810471f32263184e01f32e176958fbc69b9d026fcc31ef888838b
|
|
| MD5 |
ec8c2b3f48fbdaf3a177313b4bcfda2b
|
|
| BLAKE2b-256 |
c1125ab2c52409bbac73ec607223a4c341375602d9e55d4f589a609baca2dced
|
Provenance
The following attestation bundles were made for django_classified-1.3.tar.gz:
Publisher:
pypi.yml on slyapustin/django-classified
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_classified-1.3.tar.gz -
Subject digest:
32a049a4e7c810471f32263184e01f32e176958fbc69b9d026fcc31ef888838b - Sigstore transparency entry: 2249990390
- Sigstore integration time:
-
Permalink:
slyapustin/django-classified@4dc94dec3b2f1c10d8365b4b6e0e2a96fd9035c0 -
Branch / Tag:
refs/tags/v1.3 - Owner: https://github.com/slyapustin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@4dc94dec3b2f1c10d8365b4b6e0e2a96fd9035c0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file django_classified-1.3-py3-none-any.whl.
File metadata
- Download URL: django_classified-1.3-py3-none-any.whl
- Upload date:
- Size: 133.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15c5d242c5b6fedaf4d3db844463f7c863b4af336e8a6bccb0236718c13e507d
|
|
| MD5 |
aaf50fd7950f6b5d963858dbc697cbf5
|
|
| BLAKE2b-256 |
019665cfd1b85070169baf600ba733197458d0bd551c68c9b13c997d1c61601f
|
Provenance
The following attestation bundles were made for django_classified-1.3-py3-none-any.whl:
Publisher:
pypi.yml on slyapustin/django-classified
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_classified-1.3-py3-none-any.whl -
Subject digest:
15c5d242c5b6fedaf4d3db844463f7c863b4af336e8a6bccb0236718c13e507d - Sigstore transparency entry: 2249990490
- Sigstore integration time:
-
Permalink:
slyapustin/django-classified@4dc94dec3b2f1c10d8365b4b6e0e2a96fd9035c0 -
Branch / Tag:
refs/tags/v1.3 - Owner: https://github.com/slyapustin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@4dc94dec3b2f1c10d8365b4b6e0e2a96fd9035c0 -
Trigger Event:
release
-
Statement type: