26đź‘Ť
I have worked with all three (and more) and they are all built for different use cases IMHO. I would agree that these are the top-teir choices.
The grid comparison at djangopluggables.com certainly can make evaluating each of these easier.
django-cms is the most full-featured and is something you could actually hand over to clients without being irresponsible. Even though it has features for integrating other apps, it doesn’t have the extensibility/integration of FeinCMS or the simplicity of django-page-cms. That being said, I think the consensus is that this is the best Open Source CMS for Django. However, it’s docs are a little lacking. update: I have been told that integrating apps into DjangoCMS 2.1 has been improved.
FeinCMS – Is a great set of tools for combining and building CMS functionality into your own apps. It’s not “out of the box” at all, which means that you can integrate it however you want. It doesn’t want to take over your urls.py or control how you route pages. It’s probably a prototype for the next-generation of truly pluggable apps in Django. – We are moving from django-page-cms to FeinCMS because our primary models is high volume eCommerce and I have custom content-types I want to integrate that aren’t blogs or flash. Good documentation and support as well.
Django-page-cms – Is great if you want to just have some “About Us” pages around your principle application. Its menu system is not truly hierarchical and building your page presentation is up to you. But it’s very simple, unobtrusive, and very easy to slap into your app and get a navigation going that clients can manage, or even for yourself. It has no docs that I know of, but you won’t really need any. Read the code and you will get it all in 30 minutes or less.
update
Mezzanine – Is a very well designed CMS and one that I have finally settled on for most of my client work, mostly because it has an integrated eCommerce portion. But beyond that it has very extensible page models, and a custom admin interface that a client might be willing to use. It also has the best “out of the box” experience i.e. You can have a full fledged site up with one command.
7đź‘Ť
If you do not necessarily want a finished CMS with a fixed feature set, but rather tools on top of Django to build your own CMS I recommend looking into FeinCMS. It follows a toolkit philosophy instead of trying to solve everything and (too) often failing to do so.
http://github.com/matthiask/feincms/tree/master
Disclaimer: It is my brainchild, and the result of too many frustrating experiences trying to customize another CMS for the needs of my customers.
4đź‘Ť
If you need some more features then the simple django-page-cms just checkout django-blocks (http://code.google.com/p/django-blocks/). Has multi-language Menu, Flatpages and even has a simple Shopping Cart!!
- How do I implement markdown in Django 1.6 app?
- Django: Check for related objects and whether it contains data
- How do you mark strings as "Safe" in a view (or the template) in Jinja2?
- Docker Django 404 for web static files, but fine for admin static files
2đź‘Ť
See django-plugables website, there are few CMS components for Django listed (and some look really good).
- Error Map Keys Must be unique while using YAML extension field in docker compose for django application
- Django no csrftoken in cookie
- Form is not valid… WHY?
- Django REST Framework Swagger 2.0
- Python 2 -> 3 Django migration causes field parameter type change
1đź‘Ť
I’ve had success with integrating django-cms. Just include it at the end of your urlconf and it won’t interfere. (You’ll just lose the the nice 404 page when DEBUG=True
)
Using various combinations of context processors and custom template tags I’ve been able to do everything I’ve needed, but if you really need to insert the content into your own view, that should be easy enough. (Perhaps call cms.views.render_page()
with a template that lacks all the wrapper html?)