When comparing Falcon vs Django, the Slant community recommends Django for most people. In the question“What are the best general-purpose Python web frameworks usable in production sites?”Django is ranked 2nd while Falcon is ranked 11th. The most important reason people chose Django is:

Django's philosophy of batteries included means that experienced developers won't have to plan too much ahead on what kind of application infrastructure they need and instead just start developing web applications quickly.

Pros

Pro

Built to build REST APIs

Falcon is designed entirely around building REST APIs. It achieves this helps a lot with it being lightweight and simple. It also helps developers take some design choices which would otherwise not be possible with a more general-purpose framework,

Pro

Lightweight with minimal dependencies

Falcon is a very lightweight framework. This can be noticed simply by looking at the dependency list: other than the python standard library, six and mimeparse are the only dependencies.

Pro

Performance is really awesome

Pro

Developing a simple prototype can be very fast

Django's philosophy of batteries included means that experienced developers won't have to plan too much ahead on what kind of application infrastructure they need and instead just start developing web applications quickly.

Pro

Mature software with many plugins developed over the years

Django was first released in 2005, it has had a lot of time to mature and become better with each release. It also has by far the largest community out of all python frameworks who have continuously over the years built and maintained many powerful plugins.

Pro

Highly customizable

Django is in itself a highly customizable web framework. The database, template framework and ORM can all be swapped out.

Pro

Has an admin panel out of the box

Django comes with a highly customizable admin panel and authentication out of the box. This makes the development and production of a simple CMS extremely easy.

Pro

ORM support out of the box

Each attribute of the model is then represented as a database field. Queries are lazily executed and Django gives developers an automatically-generated database-access API.

Pro

Top notch documentation and help from community

The official Django documentation is probably some of the best around. Well written, thorough and they explain every little detail of the framework. Django is also a very popular tool, with an extensive community and a lot of experienced developers that have been using it for years. This means that there are a lot of guides and tutorials out there for new and experienced developers alike.

Pro

Clear and defined MVC organization

Django follows some pretty well established MVC patterns. With everything in place and where requests follow a clear path through urlresolvers, middleware, view and context processors.

Pro

Simple database management

Just a few lines of code can instruct Django to create all the tables and fields required in your database automatically. Schemas are managed with "migrations", that are also created automatically, and can be rolled out from your development box and implemented on production systems with just a single command.

This performs any database changes required, from table creation, indexes, renaming fields, and pre-populating initial data. Each migration builds on the previous migrations, so you can trace the evolution of your data and even recreate the layout of your database at any point in the lifecycle of your application.

Ad

Cons

Con

Limited in scope

Being designed around building REST APIs and the fact that it's minimalistic with very few dependencies makes Falcon opinionated (you should build a REST API) and limited in scope (you shouldn't be using Falcon to build a news site, blog or ecommerce platform).

Con

Can feel bloated for small projects

Django's sheer scale and functionality can feel clunky and bloated for small applications. It has too many bells and whistles which can get in the way when developing a small scale application.

Con

Routing requires some knowledge of regular expressions

Given a GET request for /topics/426/viewpoints/1/sections/create, how does Django decide which bit of Python code is invoked to handle it?

It compares the request path to your giant pile of regular expressions.

And then if there's some other regular expression starts matching /top and all your requests for /topics/ start going there, good luck figuring out why. You won't be informed of any conflict until you notice you seem to be getting the wrong pages back.

The structure of URL paths is almost universally hierarchal. There is no call to have anything as ridiculously flexible (and notoriously hard-to-read) as regular expressions to organize request routing.

Con

The documentation does not cover real-world scenarios

It is a larger documentation indeed, however is not deep and covers non real problems or even don't show any examples. You'll be better with Google or Stackoverflow

Con

Template errors fail silently by default

If you make a typo in a template variable, or change a view so that variable is no longer passed to the template, you won't get an error message pointing out that something has gone wrong. That reference will just be treated as if it is an empty string instead.

There is a way to configure this, but since so many templates have been written assuming this behavior, nobody ever enables template errors because it would break so much of the existing support tools (e.g. the built-in admin interface).

Alternative Products

Each month, over 2.8 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.