meshy / django-conman

NOT READY: Work in progress. A content management system for django
BSD 2-Clause "Simplified" License
3 stars 5 forks source link
content-management django python-3

django-conman

Coverage Status Build Status Requirements Status

A CONtent MANagement system for Django. (Get it?)

Requirements

Tested against:

Requires (should be automatically installed if using pip):

Install

# From PyPI...
pip install django-conman

# ...or from source
pip install -e git+https://github.com/meshy/django-conman.git#egg=conman

Minimal configuration

# settings.py
INSTALLED_APPS += ['conman.routes']

# urls.py
urlpatterns = [
    # All other URLS should go above this catch-all.
    url(r'', include('conman.routes.urls')),
]

Basic custom app

In the following example, MyRoute.trusted_content contains HTML that is safe to be rendered directly into a template. Only use |safe with extreme caution in your own projects.

# my_template.html
{{ route.trusted_content|safe }}

# models.py
from conman.routes.models import Route

class MyRoute(Route):
    trusted_content = models.TextField()

    template_name = 'my_template.html'

# admin.py
from conman.routes.admin import RouteChildAdmin
from django.contrib import admin
from .models import MyRoute

@admin.register(MyRoute)
class MyRouteAdmin(RouteChildAdmin):
    pass

A more complex example might use a rich text field such as the HTMLField from djagno-tinymce, and be careful to sanitise the HTML with bleach.