Django CMS for presentation websites


License
MPL-2.0
Install
pip install django-xprez==0.2.29

Documentation

PyPI version Code style: black

Django Xprez

Xprez is CMS For Django

Quick start

  1. Install django-xprez:
    pip install django-xprez
  1. Add following apps to your settings.INSTALLED_APPS:
    INSTALLED_APPS = [
        ...
        'django.contrib.humanize',
        'sorl.thumbnail',
        'xprez',
        'xprez.ck_editor',
        ...
    ]
  1. Run python manage.py migrate to create xprez models.

  2. Make sure request context processor is enabled in settings:

    TEMPLATES = [
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
                ...
            ]
        },
        ...
    ]
  1. Include the xprez admin URLconf in your project urls.py like this:
    path('xprez/', include('xprez.urls')),
  1. Create models:
    from xprez.models import ContentsContainer

    class Page(ContentsContainer):
        title = models.CharField(max_length=255)
        slug = models.SlugField(max_length=255, unique=True)

        def __str__(self):
            return self.title
  1. 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
  1. Render page in template:
    {% load xprez %}
    {% xprez_front_media %}
    {% include 'xprez/includes/photoswipe.html' %}
    {% include 'xprez/container.html' with contents=page.contents.all %}
  1. (optional) Change sorl thumbnail backend in settings - for seo-friendly thumbnail filenames:
    THUMBNAIL_BACKEND = 'xprez.contrib.sorl_thumbnail.thumbnail_backend.NamingThumbnailBackend'
  1. (optional) Look at example_app for more comprehensive example.

Development

To setup automated black formatting connected to git commits:

To rebuild ckeditor:

cd xprez/ck_editor/assets/ckeditor5
npm install
npm run build

To rebuild css styles

cd xprez/static/xprez
npm install
npm run build (or `watch` for developing)

Deploying new version

https://github.com/s-cape/django_xprez/actions/workflows/release.yml

TODO

  • add custom module tutorial to Readme
  • fix template content to save only relative path to database
  • check template content raising UnicodeDecodeError
  • create manual for various situations (ck_editor branch)
    • using custom config and implement style sources into own building system (using get_module_path.py)
    • how to implement xprezanchor functionality