Is Django Suitable?
Join the DZone community and get the full member experience.Join For Free
I got a long list of requirements from a firm that's looking to build a related family of web sites. They were down to a Django vs. Ruby-on-Rails decision.
As you can see, they've done their homework in thinking through their needs.
I grouped their "high-level requirements" into several categories. I summarized the fit with Django here, and provided details separately.
- Authentication. Django supports flexible logins and Python
makes it easy to adapt other security API's. Django and Python assure
that this is a solid 10.
- Shared Code. This is handled through Python features that
are central to the Django framework. Shared code management -- with
appropriate overrides and customization -- is part of Python and a 10.
- Database Access. While Django provides the necessary access
features, database scalability depends on the implementation of the
database engine itself. There are numerous parallelization features
that must all be used to maximize database throughput. Even though the
real responsibility for performance is outside Django, the Django
flexibility results in a 10.
- Applications. The various applications described in the
requirements are more-or-less irrelevant to Django. They can be built
easily, but are not first-class features of Django. In the sense of
easy-to-develop, this is a solid 10. In the sense of
already-existing-applications, this may be a 5 if the applications are
part of a community like Pinax. Because the applications do not already
exist, this may also be a 0.
- API. Python allows use of any API. Django's transparent use
of Python makes it easy to build API's. This is a feature of Python
and scores 10 out of 10.
- Usability and Developer Skills. Django's ease-of-use is a
direct consequence of the Python programming language. The developers
of Django make excellent use of the Python language, giving this a 10.
- Performance, Access and Scalability. For the most part,
Django performance comes from consideration of the purpose of all layers
of the architecture. Principle design features include keeping static
content separate from dynamic content (reducing Django's workload), and
optimizing the database (to hande concurrent access well). Django
provides several internal design features to minimize memory. Django
encourages proper separation of concerns, giving a 10.
In each of these areas, it's possible to dive into considerable depth. It was tempting to offer up proof-of-concept code for some of the questions.
Django (web framework)
Opinions expressed by DZone contributors are their own.