Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
Directus
The Modern Data Stack 🐰 — Directus is an instant REST+GraphQL API and intuitive no-code data collaboration app for any SQL database.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
If you're worried about traffic spikes, stick your site behind a caching proxy like Varnish or Cloudflare.
My main blog https://simonwillison.net/ runs on Heroku behind Cloudflare, with a 15m cache TTL for every page
This works perfectly. I survived a surprise Elon Musk tweet a few months ago which the server didn't even notice, because Cloudflare absorbed all the traffic: https://simonwillison.net/2023/Feb/17/analytics/
It's running here, hosted by https://fly.io - https://www.datasette.cloud/blog/
With regard to JSON API aspects of Django, have you used https://www.django-rest-framework.org/ ? I find it to be very satisfactory.
Nice and simple. I feel the only lacking feature for a basic blog is having unlisted blog posts, which is very handy when you want to share it to proof-readers. This can be done on google doc/hedgedoc [0] for sure, but then when porting there are very often typos creeping in.
[0] https://hedgedoc.org/
Django has been my go to framework for any new web project I start for more than a decade. Its batteries-included approach meant that one could go pretty far with just Django alone. Included admin interface and the views/templating setup was what first drew me to the project.
Django project itself has kept pace with recent developments in web development. I still remember migrations being an external project, getting merged in and the transition that followed. Ecosystem is pretty powerful too with projects like drf, channels, social-auth etc., covering most things we need to run in production.
https://github.com/trypromptly/LLMStack is a recent project I built entirely with Django. It uses django channels for websockets, drf for API and reactjs for the frontend.
The admin is extremely unacceptable for anything beyond trivial borderline trivial use cases, and the modifications you'd have to make are just awful especially the more interactive something needs to be. The extremely tight integration between models and the modeladmin is a blessing and curse.
The people who like Django,also tend to overload it to do everything. This makes sense at small companies. The only place I really see Django at large companies is as an api using DRF or something.
For internal admins, I've been lobbying to use https://directus.io/ at my company.
> The only place I really see Django at large companies is as an api using DRF or something.
This is not a bad thing. Using Django as an API backend is amazingly fast in terms of development time, especially with modern frameworks such as django-ninja [1].
Just use the built-in ORM to create models, write your endpoints, and use the built-in admin interface to play with the database if you don't have endpoints for everything.
There is also a less known feature of Django called admindocs [2], which automatically generates a human readable, hyperlinked documentation for your models and relations between them.
[1] https://django-ninja.rest-framework.com/
[2] https://docs.djangoproject.com/en/4.2/ref/contrib/admin/admi...
That's awesome. Parts of that sound a little bit like how my https://til.simonwillison.net/ site works.