11 ms·
For anyone thinking about picking up Django and is worried about the framework being obsolete I encourage you to take a look. Django is fantastic. I've worked
by jtchang 8y ago
For anyone thinking about picking up Django and is worried about the framework being obsolete I encourage you to take a look.
Django is fantastic. I've worked with it for a number of years now and it can really help in the early stages of prototyping.
Things I especially like about Django:
* The built in admin letting you edit and view objects easily.
* Being able to use it without using the views. Add django rest framework and you can model your domain with good REST practices.
* Migrations and works well with postgres.
* That the team has thought a lot about web security and how to implement it. Things like XSS, CSRF, CORS, session timeouts, authentication are all there in Django. Other frameworks I need to pull in a library for each and pray that they work well together. I found this especially with Flask and large projects it gets ridiculous how much I have to write from scratch.
Things that would make me not choose Django:
* If you have a graph style problem and need a graph database like neo4j. (Even then I'd probably want some part relational)
* If you accept lock in to someone else's platform like firebase and don't want to run your own servers.
* raw speed is an issue and you are okay with development taking much longer. In that case you're looking at some of the golang frameworks and possibly node/express.
- OmarGonzalez 8y agoWhy would anyone consider it obsolete to begin with ? If anything, I would consider someone making that statement miss informed
- meowface 8y agoIn the current web dev world, "not the hip new paradigm of the past 3 years" == obsolete in some people's eyes, sadly.
- Alir3z4 8y agoI would consider that person to be obsolete :D
- paulddraper 8y agoThere are not currently many well-known products that use it. (Bitbucket cloud being the exception.) That's not the best of reasons; just because Django is not used by Google doesn't mean it isn't the perfect tool for you.
- txcwpalpha 8y agoInstagram uses it. I'd say they're pretty well-known. Others: DigitalOcean, Pinterest (used Django at first, may have moved to Flask by now, not sure), Mozilla, Disqus, Robinhood, The Washington Post.
- woadwarrior01 8y agoDoesn't Instagram count as a well-known product? :)
- douglaswlance 8y agoPinterest uses Django.
- vram22 8y agoIIRC, I had read that Disqus uses Django, and that they were one of the biggest Django sites on the net, but that was a while earlier. Not sure about now. Update: Just saw that HN user txcwpalpha said the same about Disqus in sibling comment.
- KyeRussell 8y agoLast time I checked, last.fm uses Django.
- txcwpalpha 8y agoAre there people going around saying that Django is obsolete? I've seen a lot of people argue against using Django in favor of RoR or Flask, but that's usually based on personal preference. I've never seen anyone say that it's "obsolete".
- danpalmer 8y agoI’ve had a few frontend engineering candidates quiz me as to why our backend is written in Python and not JavaScript, and implying that Python is “legacy”. This is not true, but there are developers who think that.
- meowface 8y agoWould be interested to know how many backend engineers would say something so silly.
- baq 8y agoThey're juniors who also think SQL is obsolete because you can't POST a json into it. They'll understand that in order to solve problems efficiently you need a toolbox of a reasonable size.
- allyjweir 8y agoYep I’ve had this recently too. Three devs joined the team who had no experience in relational databases, didn’t even know what SQL was for. A few weeks later they told this story of using MongoDB and how they had layered some rules on top to ensure data consistency...
- ggregoire 8y agoI'm not a fan of Python but the language is still in the top 5 with C#, Java, PHP and Ruby. It's very easy to get a job as a Python dev. People saying that Python is “legacy” have obviously no idea what they're talking about. They probably think C#, Java, PHP and Ruby are “legacy” too. :)
- 52-6F-62 8y agoAt work because I have lately needed to roll web server/api/admin/client apps (embellished CRUD situations with some other serverside processing to generate user output) and for those my go to for dev speed, platform speed, familiarity, and a few other concerns I generally go with Node/Express/TypeScript and it's great to work with. However for my personal site I used Django to give it a shot. Once I wrapped my head around a couple of different paradigms it was quite nice to work with, though I probably haven't laid it out as well as I would a real product or tool. It was very easy to get a pretty basic blog set up. My only gripe might be on the blog end— it was kind of a pain to find a halfway-current compatible text editor for that purpose. But that isn't the end of the world for my own site. And of course, that's not an issue with Django itself.
- scardine 8y agoI just use plain text-areas and markdown - it avoids a lot of footguns from text-editor-like widgets.
- KyeRussell 8y agoI develop many content-driven solutions using Django and the conclusion I've come to is that everything is trash and if it's something for your use, stick to MD. I've gone with CKEditor (https://github.com/django-ckeditor/django-ckeditor https://github.com/django-ckeditor/django-ckeditor) for all my new stuff, for what it's worth.
- 52-6F-62 8y agoYeah that's what I ended up going with, too. I might yet switch it out for a plain text editor and just draft all my HTML by hand like scardine has done. But I don't exactly write a lot these days, so maybe it doesn't matter too much!
- borplk 8y agoA huge reason some people consider frameworks like Django obsolete is because they are focused on an older web paradigm of constructing elaborate html pages on the server side and pushing it out and letting some basic extra js stuff augment it. That's what lead to things like server side HTML form definition and form handling code. After the emergence of things like React, Angular, etc those "html templating" facilities get in the way because that stuff is baked into the react app and is focused on the client side, it may get server side rendered with nodejs. A modern fancy web application using React in 2018 doesn't need something like Django forms or Flask-WTF and those types of things conflict and overlap with things like React. The backend is turning more into a data/API/GraphQL service than "get html" service that was popular when these frameworks emerged.
- blattimwind 8y ago> because they are focused on an older web paradigm Which usually is faster and easier to use. > A modern fancy web application using React in 2018 Takes ages to load and melts your CPU.
- messe 8y agoOne wonders if the web would be a better place if developers used machines and networks slower than their users'.
- ASalazarMX 8y agoDefinitely. Often adding more hardware is justified because developer time is more valuable, but if you're wasting the time or resources of thousands of users, it shouldn't be acceptable.
- dep_b 8y agoHeh well I'm trying to explain my customers that the load times I'm experiencing could be similar to their users and might be a problem. One of the advantages of being a remote developer with a pedestrian SDSL connection.
- 8y ago
- cdnsteve 8y agoAlso very notable benefits: * Ease of upgrading between versions. This is especially critical and important if you have long lived projects. * Excellent documentation * Healthy community, contributors and project is run really smoothly by the team * Project is a foundation vs single point of failure ,aka main dev loses interest, comparative to other frameworks
- KyeRussell 8y ago> * Ease of upgrading between versions. This is especially critical and important if you have long lived projects. This is such a big deal and I can't work out how the JavaScript community has been operating under its 'break everything in a week' model for so long with such high traction. Django has a sane, predictable release schedule. Django has LTS releases with years of support. I work in an agency environment where applications can sit running for years without being touched, and when new work needs to be done - I can't have my entire dependency tree falling from under my feet (or arguably worse, abandoned) because people have decided that backwards compatibility doesn't mean anything. It's so so hard to not be cynical about this. The entire development world feels like it's more-so every day geared toward time-rich development teams pumping out software in a startup environment frothing over the next big thing. I have to account for every hour of my time, switching between / training other developers on new-hotness JavaScript frameworks is unjustifiable.
- swah 8y agoAnother point: websockets. Golang is pretty good and (they say) Django kinda sucks. Have you used Django channels?
- scardine 8y agoI have and it works but they completely revamped the implementation in 2.0. I'm procrastinating the upgrade because it is a royal pain.