Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I like the way in this chapter you give a flavour of what it's like to give something a try without TDD - and then return to it.
But - of all the chapters I've reviewed so far, I think this would most benefit with some more work. For me, reading the spike comes down to copy-pasting code that isn't really explained, and I don't think feel carried along with your thought process for that part of the chapter. So I think it would work better to move more of the explanation to the spike phase.
It also might work better to conduct the spike a little differently. For example:
Once you've done all that design thinking, then it could be time to go back and TDD it...but it will make a lot more sense to the reader about the thought process you've been on.
Use django.contrib.auth less?
Side note: I wonder if it is worth experimenting with using django.contrib.auth even less for this use case, it feels like a slightly awkward fit and a bit difficult to understand what is going on. Then again, maybe not.
Git commits
I've said this in a few comments, I have found it useful to have a predictable history of git commit with messages you provide, so I can find my way back if I go wrong. I won't keep saying this in future reviews unless you want me to!