26 ms·
Django 3.2
- pytlicek 5y agoI have been using version 3.2 since Beta. Deployed on a production application, so far without a single problem. I highly praise Automatic AppConfig discovery and BigAutoField for pkey. I highly recommend the transition to Django 3.2 Full release notes: https://docs.djangoproject.com/en/3.2/releases/3.2/ https://docs.djangoproject.com/en/3.2/releases/3.2/
- deleted 5y ago[deleted]
- caioariede 5y agoThe ability to customize the type of auto-created primary keys is also one step towards fixing one of the long-standing issues in Django: https://code.djangoproject.com/ticket/56 https://code.djangoproject.com/ticket/56
- godmode2019 5y agoI'm more if a flask man myself. Worked with django only when I had to. Maybe I'm wrong?
- hnarayanan 5y agoYou should try it, it’s really all batteries included.
- jtdev 5y agoThe ORM is horrendous.
- Nextgrid 5y agoCan you elaborate? I've been using it for years and it mostly does what I want. It's an ORM and obviously sometimes generates unefficient queries I need to manually amend/refactor but otherwise I don't see any major issues with it? In contrast I've looked at SQLAlchemy with Flask and I couldn't even wrap my head around declaring models (which inherit from the DB connection object if I remember correctly, so potential for circular imports) and manually managing transactions/sessions seems unnecessarily complex.
- grenoire 5y agoComparing Django vs SQLAlchemy, Django's weakest point is its extremely static ORM syntax. The double underscore separation (e.g. user__group__name__icontains) for query parameters is likely my biggest pet peeve as it requires me to unroll unchecked strings together into a big garbled mess. I would have much appreciated being able to use more code-verbose query tools; the moment you have to go into building more dynamic user-defined query systems, Django's ORM just becomes a hindrance. I also noticed the second part of the comment: Django does a lot of Python magic in the background through extensive use of reflection and class-level declarations, this hides away the abstractions (again) at the propose benefit of ease of use. And well, it is easy to use. For certain applications. I just personally found a lot of footguns trying to work with more advanced Postgres functionality (mainly around JSON) and it took a while to write my own abstractions atop the Django ORM to get to a comfortable level.
- sonthonax 5y agoThe inability to batch network calls in a single unit of work makes the ORM needlessly slow. That's also one of the main advantages to managing transactions/session yourself. It can save a huge number of round trips in a complex view. The Django ORM itself is also slow at generating SQL. Recently I was bemused by a query, which took 500us to actually be generated. This wasn't doing anything particular wild, it just had a `select_related` call to an object that had about 50 fields (not great DB design, but beyond my control). The query actually took longer to build than it did to run. That itself wouldn't be an issue if you could LRU cache the SQL query itself. But you can't, it's Django.
- hda111 5y agoThe only thing I don’t like in the ORM is that it doesn’t force you to use transactions.
- jtdev 5y agoYou don't take issue with the bizarre and inefficient queries that it often builds? I've observed simple joins implemented using looping by Django ORM... I mean, WTF???
- BiteCode_dev 5y agoDjango fan here. You are not. Several frameworks exist to satisfy several needs and profiles.
- helb 5y agoI'm more of a Django man, worked with Flask only when i had to. There's no "wrong" or "right" in this…
- Chris2048 5y agoThen why not work with PHP?
- leetrout 5y agoThere’s nothing wrong with PHP. And Laravel is very popular for good reasons. There are people out there writing Python just as bad as what you think of as bad PHP. One dev I knew insisted everything must be a list comprehension — including all for loops in regular flow control. That was Not Good(tm). ——— Edit: please read the parent comments for context. GP said there’s no right or wrong and OP said then why not use PHP and I said it’s not wrong.
- Chris2048 5y ago> There are people out there writing Python just as bad as what you think of as bad PHP. By that logic: there are people "out there" jamming pencils up their noses, therefore a shovel is just as good a writing implement as a pencil..
- leetrout 5y agoSure. It’s up to the end user to use the tools in an appropriate way. There are a ton of inconsistencies in the PHP standard library and I’m not defending that but that doesn’t make it “bad” as you insinuated.
- Chris2048 5y agoThen lets look at those semantics: what is bad, and is anything ever bad? Because I think mostly all frameworks are pretty easy in the small, it's how they help/hinder with larger projects that demonstrates their worth. On that basis, sure, it's up to the user to figure out what's appropriate; and a shovel is not an appropriate writing implement - you could say it's even a "bad" one.
- elitepleb 5y agoAt some point using Django just makes more sense. No need to reinvent the universe for bigger jobs.
- pytlicek 5y agoI also used Flask and I wasn't a Django fan. But this got me on larger projects, when Django and his "Batteries Included" made sense. Now I will soon think about the size of the project in advance, and based on that I will choose Django or Flask. There really is not something wrong here. Everything has its pros and cons.
- loloquwowndueo 5y agoRight tool for the right job. You’re not wrong unless you are - if as others said you’re reinventing the wheel on flask, or are doing a very simple API service in Django which doesn’t use most of its facilities (like the admin) and could easily be done in flask.
- danjac 5y agoDepends what you want to do, and why you're doing it. Very often when I make something in Flask, I end up with so many dependencies it might as well be Django (but without the cohesion). On the other hand, Django might be overkill in some situations (e.g. a small API without a relational database backend).
- otherme123 5y agoI was forced to fall on this trap once: a guy has a small Flask app up and running, and he asked for help to implement: an ORM with migrations, an Admin and form validation (among other things that had nothing to do with Django such file parsing). I suggested to migrate the app from Flask to Django while it was small and simple, but he refused for Django is "too big and complicated". OK, then. We ended up creating a monstrosity of Flask half-assed packages to include functionality that is already included in Django (think cache, csrf, admin...), plus WTForms, plus SQLAlchemy, plus Alembic, hard to test, hard to keep updated, hard to deploy, and so complex that it turned non-migrable to Django. Development felt like walking through mud.
- dagw 5y agobut he refused for Django is "too big and complicated". OK, then. We ended up creating a monstrosity of Flask half-assed packages to include functionality that is already included in Django (think cache, csrf, admin...), plus WTForms, plus SQLAlchemy, plus Alembic, hard to test, hard to keep updated, hard to deploy... Heh. I've done that. Impressive how quickly you can go from "I literally need three or four REST end points to let users query this SQLite database" to, well that.
- andybak 5y agoI like to paraphrase Greenspun's Tenth Law in this context: "Any sufficiently complicated Flask app contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Django"
- wirthjason 5y agoI love the paraphrased quote. It’s a bit ironic in that Python programmers love the batteries included standard library but quickly jettison that idea when it comes to Django vs Flask. Flask’s marketing of a simple route decorator makes it seem light weight but once you add everything else it becomes Django.
- mrweasel 5y agoI doubt you're wrong. There's certainly a large set of problem that can be solved equally well by either framework. There are also projects where one is clearly a better solution.
- codestasis 5y agoI've had the opposite experience, working smoothly with Django for a decade except for one huge Flask project. Which essentially re-built Django... badly. I later tried and enjoyed Flask for a really small solo project, so I don't think you're wrong. Maybe there's a lot of implicit cultural knowledge on what packages work best to compliment Flask and the original developers on the big Flask project I suffered chose poorly?
- holler 5y agoI owe a lot to Django as it was really the thing that got me into backend programming by leading me to learn python in early 1.X days. My first real programming job was backend django programming for a newspaper. Eventually things shifted towards django-rest-framework, flask, and now my go-to Starlette. Haven't used Django in some time but really appreciate the project and happy to see it moving along.
- leetrout 5y agoSame here. Django 0.96 at the Washington Post. I start a new job next week at a Django shop after a couple years of JS and Go. I look forward to getting back to it but I will miss Go. :)
- holler 5y agoCongrats on the new job! I never really dabbled with Go, but a team I was on recently worked with a backend written in Go, and I was present in lots of discussions :) For current project I'm using Starlette/asgi, but I'm sure Go would have some advantages
- deleted 5y ago[deleted]
- Chris2048 5y agoThere's more choice in the flask ecosystem, but then again, you can suffer from poor choices and a lack of architectural consistency. I'd say the big thing is SqlAlchemy for Rel DB. and Maybe alembic to compliment.
- daniellarusso 5y agoAnybody use CherryPy?
- teddyh 5y agoDjango has a few drawbacks: 1. It’s tricky to use in non-web contexts. If you ever need something to happen as a response to an event which is not a web request, Django makes this difficult and ugly. 2. Django also more or less requires ownership of the database in order to function as intended. If you want to have your Django objects in your own database and handle schema changes centrally (to, for example, alleviate problem 1 above), you must also abstain from some of Django’s power, i.e. migrations, etc.
- andybak 5y agoFor (1) The simplest is probably just running a Django management command - maybe from a cron job. But maybe I'm misunderstanding the kind of task you have in mind? For (2) - you seem to be saying "if you don't want Django to handle migrations then you lose the benefit of Django handling migrations" - but again I might have missed some subtlety here?
- flal_ 5y agoFor 1. I have found that a custom admin command can go a long way. If you want to be more "reactive" have a look at this asgi/channels thing... That or custom pythons scripts with the caveat of pointing correctly the DJANGO_SETTINGS ... As for 2. Well... Basically every ORM no ?
- wasmitnetzen 5y agoI'm using nameko and Django in a project, and haven't seen any issues with nameko just calling django.setup() and then the models and managers.
- mtberatwork 5y ago> If you ever need something to happen as a response to an event which is not a web request, Django makes this difficult and ugly. You are a bit vague but this is where message/task queues (e.g. Celery + a broker) come into play. Celery integrates with Django quite nicely.
- chpmrc 5y agoHonestly, I don't see the point of using Flask anymore. You can set up a Django project and just use a single module with a bunch of view functions, built-in testing and sensible defaults. Done. Not choosing that approach just because it takes a few more MBs on disk or needs a few more KBs of memory is shortsighted, IMO. You can't always predict what a project will end up needing. I'm legitimately asking: why would you use Flask instead of Django, even if you don't (but might) need the ORM, admin etc.? Thanks!
- philote 5y ago> I'm legitimately asking: why would you use Flask instead of Django, even if you don't (but might) need the ORM, admin etc.? If for some reason you wanted to use a noSQL database, Django's ORM and everything connected to it (like admin) won't work.
- chpmrc 5y agoThere are connectors for noSQL databases as well. Or it's surely easier to implement one than to reimplement everything else around the ORM.
- dagw 5y agowhy would you use Flask instead of Django If you don't really know Django, the learning curve on Flask is a lot shallower. So if you don't need ORMs, models, admin etc. but you just want make those python scripts you wrote callable via a web browser then you'll get version 0.1 out the door a lot sooner with Flask. Also a lot of Django kind of assumes the ORM as your data store. So if you need to use a primary data store that cannot be accessed via the ORM you lose a lot of what Django has to offer. That being said, I agree that many 'simple' Flask projects have a tenancy to grow until you have implemented most of Django in Flask anyway.
- sonthonax 5y agoBecause Django is pretty badly designed, and it can get in the way when you need to do some more complex stuff. It get's the job done for 95% of cases, but that extra 5% can devolve into some pretty nasty stuff. Typically the inflection for when Django becomes a nightmare is when you want to start splitting the application up. This is made really hard because Django depends on a whole load of globals (settings, urls, context preprocessors, the actual WSGI handler). With Flask you can have two separately configured applications running in the same process, routed with a bit of WSGI middleware. This comes in handy when you need to do a 'soft' rewrite and have code running side by side. This also just makes things easier to test, because you can build a new application object for each test with it's own settings. You can't do that in Django with out a great deal of consternation; try creating two tests with different middleware stacks in Django, patching settings won't work because the application has already loaded, and there's no way to reload it between tests. Also, for the same reason (as someone else said) it makes it tricky to use in non-web contexts. Like Celery. Django's can't handle more complex database queries. If you've ever seriously used SQLAlchemy, you'll know what you're missing. The ORM is also lacking a unit of work model, which can kill performance. The only way to create multiple objects in a single database round trip in Django is with `bulk_create`. But you can't create something like a group and then a user in a single database round trip. Sure you can create them in a single transaction, but that's not quite the same, because each roundtrip takes an extra millisecond. It's an easily avoided inefficiency that SQLAlchemy solves. The template language is limited compared to Jinja2. While this is by design, it doesn't support streaming the response back. This is really annoying if you're generating massive templates. It would have also been really simple to do. I could go on really.
- philote 5y agoI feel the same way. I like simple frameworks like Flask, Starlette, or FastAPI. Django feels too heavy for me, though I get why people like it. Maybe I haven't learned it well enough, but I often feel like I'm having to do weird things or fight the framework to get done what I need. Simpler frameworks fit my mental model better.
- StavrosK 5y agoAs a rule of thumb, Flask is good when your app will only ever need to be a single file. Otherwise, as other commenters have said, you're basically reimplementing Django badly.
- codestasis 5y agoCongratulations to the Django project and contributors on a big LTS release. And a huge thank you for the consistently excellent framework that so many have built their web dev careers on. I'll post this as a Show HN soon, but I'll mention it now as a soft-launch introduction. After a decade of using Django I started a project I always wanted to exist: backported security and bug fixes to old versions that the Django project has dropped support for. I've seen many Django projects eventually get stuck on an old version as the team I'm on is forced to defer upgrades in favor of commercial pressures and essential product delivery. So you can subscribe to https://www.codestasis.com/ https://www.codestasis.com/ to stay patched on your old version, removing the urgency to upgrade. Then unsubscribe when you're caught up. It's free for personal use and a paid subscription for businesses and organizations.
- vagrantJin 5y ago> It's free for personal use and a paid subscription for businesses and organizations. This is awesome.
- codestasis 5y agoThanks :) I also want to experiment with reduced pricing for non-profits, but first have to get the basics down and ship the free and enterprise versions. And then pay back a huge debt to Django with code contributions and corporate sponsorship.
- mherrmann 5y agoI think it's a bad idea and would recommend grandparent to charge everyone for the service, then donate parts of the proceedings back to the Django project.
- e12e 5y agoGreat project. Looks like running outdated Django will be cheaper than running outdated rails... Although I can't remember if there were multiple players delivering "lts" versions for ruby/Rails? https://railslts.com/ https://railslts.com/
- deleted 5y ago
- pantulis 5y agoBefore Django the gold standard for Python web apps was Zope. What a tremendous achievement by the Django team!
- Andrew_nenakhov 5y agoZope? Now, that's a name I haven't heard in a long time... A long time. I wonder of this magnificent monstrosity is still alive?
- leetrout 5y agoI was just reading this last week talking about zope.interface https://glyph.twistedmatrix.com/2021/03/interfaces-and-protocols.html https://glyph.twistedmatrix.com/2021/03/interfaces-and-proto...
- dragonsh 5y agoIt’s still alive and underpins the CMS plone [1]. It has evolved and separated into zope [2] zodb [3] and ztk. [1] https://plone.org https://plone.org [2] https://zope.org https://zope.org [3] https://zodb.org https://zodb.org Note: circled the link.
- samuell 5y agoI remember being quite interested in zodb for app development in python since it alleviates the need for an orm... it is a bit like a document store, right?
- dragonsh 5y agoYes indeed it is and also comes with High availability and horizontal scaling. It’s is an object store but is ACID compliant.
- deleted 5y ago[deleted]
- 5y ago
- nickjj 5y agoIf anyone is curious I just updated my Docker / Django starter project to use 3.2. It uses Docker Compose + Django + Celery + PostgreSQL + Redis + Webpack + TailwindCSS and it's available at: https://github.com/nickjj/docker-django-example https://github.com/nickjj/docker-django-example As an aside it's also using TailwindCSS 2.1 with the JIT compiler enabled.
- danjac 5y agoJust upgraded my side project to both Django 3.2 and Tailwind 2.1 (with Jit enabled). No issues at all, other than some deprecation warnings on some 3rd party packages that will probably be fixed soon.
- sgt 5y agoLooks really good. What made you choose Tailwind over the alternatives?
- danjac 5y agoI've used more component-based frameworks like Bootstrap before, but I've found it's easier to have a set of utilities and build my own components on top of that.
- ehou 5y agoWe use TailwindUI - combined with Django gives a really nice kickstart on new projects. Just made a Proof of Concept last two weeks for an internal business app for a new customer and did impress them easy with a working app + login + responsive nice looking layout. Used VUEjs for menu's, keyboard events and a location picker.
- fatsdomino001 5y agoWhy celery and redis? Couldn’t you consolidate with just redis? Love the stack though
- number6 5y ago
- varispeed 5y agoDjango is so refreshing when you come from JS world. Combined with Python is such a pleasure to do stuff with it. My favourite model is Django backend and React frontend though (I try to keep it as lean as possible). Congrats! Looking forward to update my projects.
- ziggrat 5y agoDjango rocks. I have been using it in every side project of mine since 2016. Love it, recommend it especially for teams with very less time and more features on backend.
- KennethPT 5y agoDjango is the gold standard for consistently pushing out reliable, well documented open source software without any marketing fluff or other bs. The amount of value the team is adding to the world can't be overstated.
- peterpostman 5y agoA couple of years ago(2014) I made my first Python website and really enjoyed, however when it was time to put it onlin I quickly discovered that setting up hosting and configuring it was as large a task in getting to know pip, env, unicorn, apache2 and a plethora of other software to host it, is this still the case? Becaue this is what keeps me of hosting websites with python.
- airstrike 5y agoYou can always shortcut things by using Docker
- dangerbird2 5y agoYou'll still have to configure gunicorn or another production-ready (w|a)sgi server to serve the app out of the container, but it's much easier to manage dependencies for django in a containerized environment. It's even easier if you use a deterministic package manager like pipenv or poetry instead of old requirements.txt files
- collyw 5y agoAdding an extra layer doesn't make things simpler. It may make it easier to do a second time, but the initial set up is just the same.
- Sileni 5y agoAt least with pip and env, you'd have a hard time doing general tasks in python without getting to know them anyway. You can also shortcut a lot of that with a hosting service like Heroku, which takes on a lot of the mental overhead for you. You've made me curious to ask, what programming environments don't have a significant learning curve when you get to the hosting portion, short of a "no-code" hosting solution?
- jfdi 5y ago<3 to Django team and community. Thank you for your continued great work and congrats on this latest LTS!
- alwaysanoobie 5y agoAny one have any pointers to learn the Django stack from the basics? Any specific video course or a book? "Two Scoops of Django" was recommended to me by someone on HN. I think it is currently being worked on for Django 3. It is on my reading list.
- caioariede 5y agoTwo Scoops of Django and the Django Tutorial itself are amazing. I highly recommend both.
- onepointsixC 5y agoTwo Scoops of Django is probably one of the absolute best books to read on Django. I would read that before looking for anything else.
- greenie_beans 5y agoI wouldn’t start with Two Scoops if you’re trying to learn “the basics”. Check out the MDN django tutorial
- alwaysanoobie 5y agoThanks for the pointer to MDN. It's awesome! The tutorial really drops to the very fundamentals.
- canadapups 5y agoTango with Django was by far the best resource I've used. Two Scoops is more for people who have a django project already and want to learn best practices of django.
- nanna 5y agoThe latest version of Tango with Django is from 2019 and is compatable with Danjango 2.2. Has a lot changed since then, if one was to work with 3.2?
- onepointsixC 5y agoWhat ever happened to the Async ORM? I thought that was originally supposed to be part of Django's 3.2 as part of their Async roll out.
- ataylor32 5y agoI think if that was ever said by a core member, it was stated as a goal, not a for sure thing. I believe I've only ever heard it as speculation / wishful thinking.
- hdbsjahxb 5y agohttps://docs.djangoproject.com/en/3.1/topics/async/ https://docs.djangoproject.com/en/3.1/topics/async/
- hdbsjahxb 5y agoRolled out before 3.2
- vmsp 5y agoIt's a shame that Django's templates are still so bad. You can't just import and call some arbitrary python function. You most likely need to write a template filter or tag [0]. Maybe there's a good reason for this but it just feels like I'm working around a weird issue in the framework. Also, I can't use parentheses inside if statements in a template. It's a strange restriction. I know that Jinja2 -- which is good -- is supported. But it's a second choice, requires some setup and it's not the usual way of doing things. Don't get me wrong. I like Django and it's still far, far ahead of most other web frameworks. But, because of these issues and also because the frontend story in Django is not that great I find myself reaching for Rails, these days. [0] https://docs.djangoproject.com/en/3.1/howto/custom-template-tags/ https://docs.djangoproject.com/en/3.1/howto/custom-template-...
- question11 5y agoI think a lot of developers have moved to reactjs calling an api.
- collyw 5y agoBasically doubling the complexity of an app. If you need a fair amount of front end interaction, fair enough, but many apps would be a lot simpler with Django templates and a bit of jQuery.
- silviogutierrez 5y agoAgreed. This is why I created a library to render JSX through Django. See it here: https://github.com/silviogutierrez/reactivated/ https://github.com/silviogutierrez/reactivated/ Both my personal blog and business run on it in production. See my profile for links. The biggest issue was deploying it since you need python and node. Still a work in progress, and docs are severely lacking. But I did add a single-click deploy to Heroku: https://dashboard.heroku.com/new?template=https://github.com/silviogutierrez/reactivated/tree/infrastructure/heroku https://dashboard.heroku.com/new?template=https://github.com...
- akuchling 5y ago
- tootie 5y agoFor those of you with a big portfolio of apps, how do you handle framework updates? Scheduled housekeeping once a quarter? Ad hoc? Ignore them until a disaster happens then panic?
- collinmanderson 5y agoI generally develop against django master with loud warnings. Whenever a warning comes up, such as `DEFAULT_AUTO_FIELD` not being specified, or a behavior change such as `SECURE_REFERRER_POLICY`, I go through and apply the same change to _all_ my projects at the same time. So I'm applying minor changes to multiple projects at the same time as I become aware of the new changes. Once the new Django version comes out, they're basically ready to go live with the new version.
- frankwiles 5y agoThe necessary changes with your use of the framework are pretty minimal so it's easy enough to keep pace on about a quarterly basis. Usually the only friction is if there is a third party library/app you're using that doesn't yet support the newer version of Django.
- NeutralForest 5y agoI haven't used Django except as an ORM and it was a terrible experience. Anytime I wanted to update an existing relationship, it was a pain. I've heard a lot of good stuff about it when used as a web framework but I was really baffled by the ORM.
- ph4 5y agoWhat was so painful about it? Unless you're making some really significant changes to your models, Django's migration commands handle 99.9% of cases including most common edge cases. I can't imagine it being any easier, and certainly haven't seen any other web frameworks handling migrations any better.
- NeutralForest 5y agoI just tried to add a new attribute to a many-to-many relationships
- Syntaf 5y agoI've found the Django ORM to be, in my own opinion, one of the easiest ORMs to hit the ground running with. What was the confusing aspect of updating relational data for you?
- NeutralForest 5y agoCreating relationships was not a problem but for example, adding new fields to an already created many-2-many was an issue. Changing migration scripts was also a hassle.
- skrtskrt 5y agoI have run into this exact problem. A many-to-many table had a business meaning, not just an "invisible" relationship. We wanted to put a model in front of it & add soft deletes and created-at/updated-at fields, at it was a mess of hoops and hacks to jump through.
- gregasquith 5y agoDjango is a sensational piece of open source software - I've used it on so many projects. Seen some replies saying it's a pain to deploy - look at guides for Heroku and Google's App Engine - both are super simple processes. If you want more control AWS Lightsail also has a great guide.
- buffalobuffalo 5y agoA couple thoughts on django as a long time user. First, the good: - Django was the first framework i learned when learning to code. It's documentation was amazing, and it made conceptualizing an MVC framework really easy. - Django's ORM is phenomenal for managing migrations of a relational database, especially postgres with stuff like jsonb. I've even included it in non-python projects, just to handle table migrations/rollbacks. - The huge ecosystem is amazing. Great for rapid prototyping. Plugins for all kinds of crazy stuff. Now the bad: - In some ways it feels like a relic of an earlier stage of python. It's support of asyncio is spotty at best (running the orm in a thread executor not a good work around). - It's support for type enforcement with mypy is not great. This is maybe my biggest issue with using it on large collaborative projects. - It doesn't play nicely with a lot of the rest of the python ecosystem. Want to swap in SQLAlchemy? Sorry, no dice. Want to have nice swagger documentation? Use django rest framework or you're out of luck (i know it can be done, but it's kind of messy). So in short, it's a bit of a monolith. These days I tend to only use django for it's orm in situations where i want a quick ad hoc database for something, or for rapid prototyping. If I'm going to do a larger project in python, I'd definitely go with FastAPI. But still, gotta appreciate that it's there, and has been reliable/well maintained for more than a decade.
- yhoiseth 5y agoHow productive are you with FastAPI compared to Django? I’m thinking of things like forms, error handling and all the other extra stuff that comes with decoupling the frontend and backend.
- skrtskrt 5y agoThe main thing I would wonder about is if there's a good auth plugin for FastAPI. I am not a huge fan of Django, but if you have already chosen Python, it is really hard to argue with having good, battle-tested auth system out of the box.
- buffalobuffalo 5y agoThe other side of the coin is that django's auth system is pretty rigid. Adding additional fields to the user object is clunky, and trying to do an unusual auth flow can be downright ugly. Dealing with that a few times can leave you a lot more open to designing your own and/or patching together other libraries. At least, that's how it went for me a few years ago.
- tarequeh 5y agoCongratulations to the django team. Having used django for many of my projects for over a decade, it's exciting to see the django community is still going strong and the core members are continuing to push out significant releases such as the 3.2 LTS.
- itwy 5y agoI've been using Django since 2010, I recently hit a roadblock with it that forced me to switch to Go for one of my projects. That's to say, it's not for everything. Especially may not be suitable for advanced SaaS services.
- ghughes 5y agoAvoid for now if you use django-cachalot; one of the monkey patches is broken in Django 3.2.