What are the strengths and weaknesses of django? especially what I can't do with django?

I’m looking to know specifically, the areas in which django is not a good choice.

These opinions are mine and mine alone - some people may disagree with one or more of these, and I hope they chime in to share their opinions as well.

Areas where selecting Django may not the best choice:

  • You don’t have a development staff comfortable with:

    • working with Python.
    • deploying Python-based applications as web applications
    • working directly with a database engine and not just through tools like phpAdmin.
    • don’t have a clear understanding of the HTTP request/response cycle and what that means regarding the difference between what happens in the server and what happens in the browser.
    • comfortable with working with all the technologies necessary for a full Django deployment. What all is in this list depends upon what features or components are being used by your project, but may include things like nginx, Celery, memcached, redis, cron, systemd, etc.
  • You don’t have a deployment environment conducive to running Python web applications. (Many low-cost hosting platforms make this extremely difficult and considers Python applications to be “unsupported”)

  • You need some degree of “through-the-web” management of the system.

  • You’re expecting a “ready-made” / “end-user ready” environment similar to Wordpress or Drupal, etc.

  • You need API-level compatibility with another system already providing some type of API.

    • This is particularly problematic when that external system doesn’t well document that API you’re trying to replicate. (I’m looking at you socket.io.)
  • You need to live-stream continuous data (audio / video)

    • Note, this doesn’t mean you can’t use Django in an environment where live-streaming data is necessary. You would just need to use a separate component to do that. (For example, nginx documents that it can do that natively with direct support of the RTMP protocol.)
  • You need to provide some type of web-based interface to extremely constrained environments. (I run a Django/Channels system on a RaspberryPi 3 - it works extremely well. I don’t think that project would work well on something like a Pico though, but I admit I’ve never tried.)

Aside from these items above, we haven’t yet run into a situation where we’ve chosen to use Django and have regretted that decision.

Thank you so much for your answers. It will help us to be more successful.