Welcome#

This is django-simple-page#

Django-simple-page is a cms buildkit for your website. The strength of this project is its simplicity - using comprehensible yet powerful concepts. You get the basic stuff, but retain all your freedom.

Features#

  • Tree structured Pages: By django-mptt.

  • Pages and sections: Assigning sections to regions on pages.

  • Custom rendering logic: Each page or section can have its own renderer.

  • Simple yet powerful concept: Everything can be customized by subclassing.

  • Admin backend integration: Easy to use via drag and drop.

Basic Concept#

Pages and sections#

You got a reliable database layout of pages and sections objects. Sections are associated with regions on pages. Everything else is up to you. Sections could be anything you want, from a simple content type like an article with title and text body to a full featured gallery. You build what you need just by subclassing the page and section model.

Renderers#

While there are default renderers for pages and sections which are probably suitable for most use cases, you are free to completely adapt or overwrite them. Each page or section can have its own renderer providing a specific rendering logic. And each renderer can have its own Media class defining javascript or css files. Those media assets are merged by the page renderer and be available as media template variable.

Summing-up#

As you can see, everything is done by subclassing. While django-simple-page giving you the basics to build your website, it is not taking any freedom from you. You define your pages with regions, your sections as content, your rendering logic with their media classes and put everything together like building blocks.

Admin integration#

We provide a handy admin backend integration. Rearrange your pages by drag and drop. Add sections to your page regions with inline formsets and reorder them by just dragging them to their new position. It’s simple and sufficient.

Utils#

Page view#

A simple view function to render a page by its slug. Use it in your url configuration. See page_view() for more details.