[Solved]-Django vs. Grok / Zope3 vs. Pylons


Based on your background and requirements, I’d advise you to go with something like http://pinaxproject.com/ which is based on Django.

Pyramid (the successor to Pylons) is a very low-level framework and you need to either choose the libraries or write all your application code yourself. For someone experienced this makes sense and gives you full control over your code. But it is a bit of a hurdle if you start from scratch and aren’t familiar with the available libraries.

Django and Grok are both high level frameworks, with Django being the more popular choice. If you aren’t familiar yet with using object databases or URL traversal, Grok is more time consuming to learn.

Plone is not suited for your use-case. It’s a content management system and not a general web framework. Very little of the libraries it uses can be reused in a different context, certainly none of its UI. If you want to provide an engaging user experience with personalized content, Plone isn’t for you – that’s not what its been build to handle.

Disclaimer: I’m a release manager for Plone and Zope 2 / Zope Toolkit and have used Pyramid but not Django.


Dolmen project is a CMS built on top of Grok. Is very simple, but there are very few that use it. If you go with Grok, you could be able to reuse the GUI.

But As Hanno said, Grok is more time-consuming to learn than Django. Also Django has far more users than Grok.

The advantage of using Grok is that you can profit from Zope Component Architecture almost without writing ZCML and using decorators instead.

With Pyramid/Pylons you get a very simple framework and nothing else. It is a decoupled framework, so you are free to use whatever templating enginge you want (Mako, Genshi, Jinja, Cheetah), you are free to choose sqlalchemy, zodb, mongoDb, etc., and you are also free to choose the url mapping scheme (traversal vs. django-style mapping or a combination of both). You can also use ZCA here if you want. For starters this might become quite confusing or verbose.

Django is a kind of monolithic framework that gives you one way to do stuff. That’s why it’s easy to learn and a very good option. But, in my experience, you sometimes get to a point where you want to deviate from Django standards and it simply cannot be done without patching a bunch of stuff.

And, as for Zope3, I’d recommend you to download a copy of BlueBream and se how it does for you.


As a Plone user I can say that creating Content Objects in Plone is difficult. There is not much documentation on how to do it and it is complicated. Some recommend using UML and specialized Plone products to make it easier but that introduces yet another dependency.

I mention the problem with content objects because your “products” (not the same as a Plone product) would probably be represented in Plone as a content object which you would need to write yourself.

Plone is best when users and editors are entering and approving text in the form of news articles, press releases, photos etc. When that is the use case there are predefined content objects for such things so one does not need to write them oneself.

–Jonathan Mark

Leave a comment