makemigrations after a model change, then wondering why migrate has nothing to apply.Model.objects.get() when a matching row might not exist, without catching DoesNotExist — an unhandled 500 instead of a clean 404.ForeignKey to on_delete=CASCADE without considering whether cascading deletes are actually the intended behavior for that relationship.{% csrf_token %} on a POST form, then being confused by a 403.SessionMiddleware or AuthenticationMiddleware it actually depends on.Python's language-level fundamentals (the ones that show up independent of any framework) are covered in Python Fundamentals for Interviews. Practice querysets, views, and the N+1 fix as runnable exercises in the code lab.