6 ms·
Django is still by far the best web framework as far as I can tell. Every couple years I check what's out there for GoLang, Rust, Nodejs, and Swift, and it seem
by Alex3917 8y ago
Django is still by far the best web framework as far as I can tell. Every couple years I check what's out there for GoLang, Rust, Nodejs, and Swift, and it seems like it will be a decade or more before anything else comes even close.
Even though a lot of people don't like Django's ORM, at least it does almost everything you would want to do with Postgres. (And if you want more you can always use SqlAlchemy.) Most of the other ecosystems don't even have anything near the baseline functionality built into Django.
- auvi 8y agoI think you are missing the elephant in the room: Ruby on Rails.
- Alex3917 8y agoWith Python you get: - The best-governed language in all of software, and the best-governed web framework - A huge ecosystem of libraries for everything from data science to email processing, that are (mostly) easy to read and modify and free from systemic security issues. And pretty much every major company with an API has an official Python library for that API. - The standard language taught at most of the top CS programs around the world - A web framework that's had almost no major security issues over the 10+ years its been around What exactly would you get in terms of benefits from switching to Ruby? I'm not saying Ruby or Rails are bad tools, I just don't get why someone who already knew Python and Django would switch. I get that if you run a dev shop it might be a better choice for just cranking out web apps as fast as possible for clients, but if you run an actual startup I don't see that the benefits of saving a couple lines of code would offset the costs of being locked into the ruby ecosystem.
- mtberatwork 8y agoDjango's documentation is also simply top notch.
- howiroll 8y agoI disagree. There are too much undocumented potholes.
- paulddraper 8y ago> What exactly would you get in terms of benefits from switching to Ruby? You'd get Ruby on Rails.
- deleted 8y ago[deleted]
- driverdan 8y agoI've spent years using Rails and about a year with Django. In general find Rails to be more logical and less cumbersome. Django feels more cobbled together than Rails, with less cohesiveness. Sorry that these are fairly abstract statements without examples. I need to start tracking them.
- ablerman 8y agoI find this comment interesting because my experience is the exact opposite. (I won't bore you or tempt the trolls with details) I don't mean to downplay your experience at all. My working theory is that you just think the way the rails devs do and I think the way the Django devs do.
- driverdan 8y agoCould be. Could be that I have more experience with Rails and used it first. Maybe if I used Django first it'd be the other way around. For the record I didn't want to do Rails work when I started, and begrudgingly accepted being called a Rails developer only after two years of experience.
- dcbadacd 8y ago> - A huge ecosystem of libraries for everything from data science to email processing, that are (mostly) easy to read and modify and free from systemic security issues. And pretty much every major company with an API has an official Python library for that API. I disagree about this, there's not even a basic user signup flow plugin with page templates that would allow SSO and U2F, it was so when I was looking at it three months ago. With Flask I can use Flask-Security, Flask-Dance and I have user signup, pw resets, SSO. With CSRF protection out-of-box and bunch of other security features are easy to turn on compared to Django. What I did like about Django was the idea and maybe I would've liked Django-Admin if I didn't have to reinvent three wheels out of four.
- deleted 8y ago[deleted]
- _visgean 8y agoU2F and django was easy last time I have done it. Which was about year ago.
- Alex3917 8y agoThere was a mailing list discussion about building U2F into Django, and I agree that should get done. I don't know a ton about SSO, although I'm more skeptical about building it into Django only because there are many different ways you might want the business logic to work, so to me that suggests using a library for that might be more appropriate than having it built into the framework.
- dcbadacd 8y agoThere's not even a good 3rd party library, I spent like a day testing all of them out and it's so cumbersome compared to what I had to do with Flask-Security and Flask-Dance.
- Alex3917 8y agoFair. I had the same issue a few weeks ago implementing OAuth as a provider. There is a library that is reasonably functional, but the documentation is so bad that if you followed it verbatim there would be huge security holes in your app.
- robdachshund 8y agoPython is much easier to learn and most devs already know it. It fosters quick and simple code that is super easy to maintain, and python/django is a huge and accessible ecosystem. I don't need to learn a new language I won't use for anything else, I don't need to learn a framework that is not as simple as its proponents describe. I also don't need to learn a new package manager or go digging for gems that do what I need. If you aren't already invested in ruby, there is very little to gain as a web app developer. It would be a huge waste of time to drop django or flask and learn not only a new framework but also a language that is often described as cumbersome to use. Ruby on rails might make sense if you already know it, but it makes little sense for anyone else to learn it these days.
- sparkling 8y agoI have used both Ruby on Rails and Django in large production web applications over 2+ years. Speaking strictly about the web framework, RoR is the slightly better framework IMHO. This includes but is not limited to: - cleaner internal APIs, models, methods - a lot more stuff that "just works" out of the box where you would need a third-party package in Django (e.g. RoR gives you different settings for development/staging/production out of the box) - better static file handling - third-party packages tend to be a bit more mature and stable in the RoR world However, using Django gives you easy access to the rest of the Python ecosystem, including all the data science and ML tooling. And that trade is worth it. So if you are starting from scratch today, i'd go with Django.
- Godel_unicode 8y ago> better static file handling Don't you just let nginx/CDN handle these?
- Nextgrid 8y agoI think he’s referring to the app being aware of static files so it can resolve their URLs, etc (without having to hardcode paths). You develop by just assuming all your static files would be served by Django itself (and they will - using the dev server) and then change the project’s configuration to use a CDN or S3 (using a library - which will automatically collect & upload your files too) with no change to the underlying code.
- true_religion 8y agoAsset Pipelining is a dingo plug-in, but a built in for Rails.
- ethagnawl 8y agoI think they meant the Sprockets/Asset Pipeline or whatever the new Webpack-based solution is.
- agiamas 8y agoBeing in a similar position, I wanted to post but your post is spot on. ML and DS have basically lifted Python and by association Django quite a lot...
- h1d 8y ago> a decade or more before anything else comes even close. Stopped reading at the fanboism.
- iwebdevfromhome 8y agoSymfony is a great php framework too
- nicoburns 8y agoIMO PHP's Laravel is competitive with Django. I think Django, Laravel, and Rails are really the only 3 frameworks with the levels of ecosystem and built in functionality that these 3 have (unless there's something in Java-land that I'm not aware of). ASP.NET Core is close, but the ecosystem around it is weaker.
- conradfr 8y agoPhp-wise Symfony is easily on par with Laravel and a really well managed project.
- mtberatwork 8y agoWhy would it be on par? Laravel is built with Symfony. [1] [1] https://symfony.com/projects/laravel https://symfony.com/projects/laravel
- blowski 8y agoSymfony is more like Java Spring, whereas Laravel feels like a port of Django and Rails. Compared to Laravel, it’s easier to use Symfony to build large applications, but it can feel like overkill for smaller CRUD-only applications. It has a steeper learning curve, so Symfony’s developer pool is more skewed to the senior end.
- Longhanks 8y agoFor Java there's Spring, which is like an entire universe in itself.
- BuckRogers 8y agoI reviewed these sort of web frameworks some time ago and went with ASP.NET Core because of the language attached being more to my liking and industrial-strength than Python, PHP or Ruby. I go in assuming every project will be 500KLOC someday, because it can happen. I've seen codebases this large in Python, and it was no bueno. Static typing, forward migration / backwards compatibility take top priority for me. Laravel was my 2nd choice, the recent adoption of a JIT into the core really adds some desirability to the space. Not to mention HHVM and how much Wordpress is out there.
- vonseel 8y agoDjango is my number one, but I think certain languages and the communities behind them - including Go and Rust, for sure, fit much different use-cases than Python/Django and thus there's good reason why you don't find massively popular full-featured web frameworks [for those langs]. Node.JS, on one-hand seems to take the approach of Go-lang - standard libraries that do basic web-handling well, but on the other hand, I think it is tarnished by Javascript's reputation for having too many third-party packages, too many options, new framework every week, etc. C# / .NET core seems to be a strong up-and-comer alternative for teams looking for a full-featured and well-supported application framework with more type safety and performance than Python/Django or RoR. Elixir / Phoenix, as well, but that caters to an entirely different crowd. I expect most Go users are not using much in the way of frameworks.