Django CMS for presentation websites
Project description
Django Xprez
A flexible Django CMS with built-in modules and easy custom modules.
The backend works well with Django admin but can also be used standalone.
Features
- Structure
- Containers — apply or extend in your own models (e.g. Page, Article).
- Sections — rows with max-width, background (part of the structure).
- Modules (content blocks)
- Built-in: text, quote, gallery, files, video, numbers, code input, code template, anchor.
- Custom: simply subclass
Modulein your app; they auto-register and appear in the same admin UI and frontend.
- Responsive
- Layout (visibility, columns, padding, margin, colspan) per breakpoint.
- Responsive images (srcset, breakpoint-aware sizes).
- Styles
- Ready-made frontend CSS included.
- Or import xprez SCSS into your build; link
{% url 'xprez:css_variables_global' %}for breakpoint variables.
- Clipboard and symlinks — Copy modules or sections; paste into another page or paste as symlink to reuse the same content.
Quick start
- Install django-xprez:
pip install django-xprez
- Add following apps to your settings.INSTALLED_APPS:
INSTALLED_APPS = [
...
'sorl.thumbnail',
'xprez',
...
]
-
Run
python manage.py migrateto create xprez models. -
Make sure request context processor is enabled in settings:
TEMPLATES = [
...
'OPTIONS': {
'context_processors': [
...
'django.template.context_processors.request',
...
]
},
...
]
- Include the xprez urls in your project urls.py like this:
path('xprez/', include('xprez.urls')),
- Create models:
from xprez.models import Container
class Page(Container):
title = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, unique=True)
def __str__(self):
return self.title
- Register models in admin:
from django.contrib import admin
from xprez.admin import XprezAdmin
from .models import Page
@admin.register(Page)
class PageAdmin(XprezAdmin):
pass
- Render page in template:
{% load xprez %}
<link rel="stylesheet" href="{% url 'xprez:css_variables_global' %}">
{% xprez_front_media page %}
{% include 'xprez/container.html' with container=page %}
- (optional) Add a custom module:
from xprez.models import Module
class MyModule(Module):
title = models.CharField(max_length=200)
count = models.PositiveIntegerField(default=0)
is_featured = models.BooleanField(default=False)
front_template_name = "myapp/modules/my.html"
class Meta:
verbose_name = "My module"
See the built-in modules source for more examples.
- (optional) Change sorl thumbnail backend in settings — for seo-friendly thumbnail filenames:
THUMBNAIL_BACKEND = 'xprez.contrib.sorl_thumbnail.thumbnail_backend.NamingThumbnailBackend'
For user documentation, see docs/user/README.md.
For an example, see the example_app in this repository.
For development and contributing, see docs/development.md.
Project details
Release history Release notifications | RSS feed
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_xprez-0.3.3.tar.gz.
File metadata
- Download URL: django_xprez-0.3.3.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
643fcd4d6a28dc90629ac61c8d9cb6dc594b0fd0258683fa20a0594f1c9fc991
|
|
| MD5 |
c7954fb2bd2d70028815e934aa341e00
|
|
| BLAKE2b-256 |
04c9d0641771ace1b47c639e4c90c4f86b0378060dfff626f904928c47ec1794
|
File details
Details for the file django_xprez-0.3.3-py3-none-any.whl.
File metadata
- Download URL: django_xprez-0.3.3-py3-none-any.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7aabec290c2f1b03da71115639bee2f0bc25877ebd4b08987204affc7216c95
|
|
| MD5 |
68440f6ec0f2b576001b23bc8c36139f
|
|
| BLAKE2b-256 |
28525099c958e04ebecd51b3b533f0b4ac43b5986c5f2468c465d565459061f0
|