Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Django Through The Years

Django Through The Years

A talk I gave at DjangoCon US 2022.

Andrew Godwin

October 18, 2022
Tweet

More Decks by Andrew Godwin

Other Decks in Programming

Transcript

  1. THROUGH THE YEARS
    ANDREW GODWIN // @andrewgodwin
    DJANGO

    View full-size slide

  2. Andrew Godwin / @andrewgodwin
    Hi, I’m
    Andrew Godwin
    • Principal Engineer at Astronomer (w/on Airflow)
    • Django Migrations, Channels & Async
    • Doing odd things with Django since 2006

    View full-size slide

  3. Andrew Godwin / @andrewgodwin
    I love a nice, relaxing conference
    Sitting back, chatting to people, doing a panel tomorrow

    View full-size slide

  4. Andrew Godwin / @andrewgodwin

    View full-size slide

  5. Andrew Godwin / @andrewgodwin

    View full-size slide

  6. Andrew Godwin / @andrewgodwin
    FOR FUN AND MAYBE PROFIT
    CNC Machining

    View full-size slide

  7. Andrew Godwin / @andrewgodwin
    AND WHY BUILDING THEM IS HARD
    CAMPER VANS

    View full-size slide

  8. Andrew Godwin / @andrewgodwin
    AND HOW CUTE THEY ARE
    MY CATS

    View full-size slide

  9. Andrew Godwin / @andrewgodwin
    I've been using Django since 2006
    Yes, that is almost half my life now. Don't remind me.

    View full-size slide

  10. Andrew Godwin / @andrewgodwin
    I've been attending DjangoCon since 2008
    That first one was a transformative experience in my life!

    View full-size slide

  11. Andrew Godwin / @andrewgodwin

    View full-size slide

  12. Andrew Godwin / @andrewgodwin
    Schema Evolution Panel, 2008

    View full-size slide

  13. Andrew Godwin / @andrewgodwin
    Django was different back then…
    Here's some highlights from the 1.0 release, right before DjangoCon 2008

    View full-size slide

  14. Andrew Godwin / @andrewgodwin

    View full-size slide

  15. Andrew Godwin / @andrewgodwin

    View full-size slide

  16. Andrew Godwin / @andrewgodwin

    View full-size slide

  17. Andrew Godwin / @andrewgodwin

    View full-size slide

  18. Andrew Godwin / @andrewgodwin
    Cal Henderson's "Why I Hate Django"

    View full-size slide

  19. Andrew Godwin / @andrewgodwin
    No multiple databases
    Dumb SQL generation
    Cookie-based sessions
    No good debugging tools
    No migration system
    Not smug enough

    View full-size slide

  20. Andrew Godwin / @andrewgodwin
    No multiple databases
    Dumb SQL generation
    Cookie-based sessions
    No good debugging tools
    No migration system
    Not smug enough

    View full-size slide

  21. Andrew Godwin / @andrewgodwin
    No multiple databases
    Dumb SQL generation
    Cookie-based sessions
    No good debugging tools
    No migration system
    Not smug enough

    View full-size slide

  22. Andrew Godwin / @andrewgodwin
    South
    (Because birds migrate south in the winter)
    (It takes some people years and years to realise this)

    View full-size slide

  23. Andrew Godwin / @andrewgodwin
    https://aeracode.org/speaking/

    View full-size slide

  24. Andrew Godwin / @andrewgodwin
    https://aeracode.org/speaking/

    View full-size slide

  25. Andrew Godwin / @andrewgodwin
    Schema Evolution Panel, September 2008

    View full-size slide

  26. Andrew Godwin / @andrewgodwin
    Schema Evolution Panel, September 2008

    View full-size slide

  27. Andrew Godwin / @andrewgodwin
    Schema Evolution Panel, September 2008

    View full-size slide

  28. Andrew Godwin / @andrewgodwin
    Designing Django's Migrations, April 2014

    View full-size slide

  29. Andrew Godwin / @andrewgodwin
    Designing Django's Migrations, April 2014

    View full-size slide

  30. Andrew Godwin / @andrewgodwin
    Designing Django's Migrations, April 2014

    View full-size slide

  31. Andrew Godwin / @andrewgodwin
    Designing Django's Migrations, April 2014

    View full-size slide

  32. Andrew Godwin / @andrewgodwin
    Migrations Under The Hood, November 2014

    View full-size slide

  33. Andrew Godwin / @andrewgodwin
    Migrations Under The Hood, November 2014

    View full-size slide

  34. Andrew Godwin / @andrewgodwin
    Migrations Under The Hood, November 2014

    View full-size slide

  35. Andrew Godwin / @andrewgodwin
    Migrations Under The Hood, November 2014

    View full-size slide

  36. Andrew Godwin / @andrewgodwin
    Migrations Under The Hood, November 2014

    View full-size slide

  37. Andrew Godwin / @andrewgodwin
    Now, it Just Works™
    (I have to use Alembic at work right now and I'm missing Django)

    View full-size slide

  38. Andrew Godwin / @andrewgodwin

    View full-size slide

  39. Andrew Godwin / @andrewgodwin
    Django is "Boring Software"
    And I mean this in the nicest way possible

    View full-size slide

  40. Andrew Godwin / @andrewgodwin
    The Web went all-in on SPAs
    But it seems that wasn't the right choice for everything…

    View full-size slide

  41. Andrew Godwin / @andrewgodwin
    What is Django?
    Is it complete? Do we have a goal?

    View full-size slide

  42. Andrew Godwin / @andrewgodwin
    APIs rule the Earth
    Ideally just one set for all your apps

    View full-size slide

  43. Andrew Godwin / @andrewgodwin
    Django Rest Framework is good…
    …but I think FastAPI and Pydantic have some nice ideas too

    View full-size slide

  44. Andrew Godwin / @andrewgodwin
    HTMX shows us a different way
    (I've tried, I'm just not a React/Vue/etc. person)

    View full-size slide

  45. Andrew Godwin / @andrewgodwin
    id="print-form"
    action="."
    method="post"
    hx-post="."
    hx-swap="outerHTML"
    hx-trigger="change">
    {% csrf_token %}
    {{ form|crispy }}


    View full-size slide

  46. Andrew Godwin / @andrewgodwin
    def create_print(request):
    if request.method == "POST":
    form = PrintForm(request.POST)
    if form.is_valid():
    if not request.htmx:
    # Do stuff
    else:
    form = PrintForm()
    if request.htmx:
    return render(request, "create/_print_form.html", {"form": form})
    else:
    return render(request, "create/print.html", {"form": form})

    View full-size slide

  47. Andrew Godwin / @andrewgodwin
    So what can Django become?
    Is there a singular goal?

    View full-size slide

  48. Andrew Godwin / @andrewgodwin
    What do today's developers need?
    What do we aim for? Who knows best?

    View full-size slide

  49. Andrew Godwin / @andrewgodwin
    First-party API framework
    Inspired by DRF, FastAPI and others
    HTMX templating and form handling
    Doesn't have to be first-party, already some plugins
    Separately-useable ORM?
    I literally first heard this idea at DjangoCon in 2008

    View full-size slide

  50. Andrew Godwin / @andrewgodwin
    But that's just what I want
    Django's best when we all work together and balance needs

    View full-size slide

  51. Andrew Godwin / @andrewgodwin
    Big features are driven by individuals
    They need someone to take the wheel and work to a vision

    View full-size slide

  52. Andrew Godwin / @andrewgodwin
    You can inspire our future.
    And plenty of us are here to help out.

    View full-size slide

  53. Thanks!
    Andrew Godwin
    @andrewgodwin // aeracode.org

    View full-size slide