{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2025.1.0"}, "schedule": {"url": "https://pretalx.evolutio.pt/djangocon-europe-2026/schedule/", "version": "1.4", "base_url": "https://pretalx.evolutio.pt/", "conference": {"acronym": "djangocon-europe-2026", "title": "DjangoCon Europe 2026", "start": "2026-04-15", "end": "2026-04-19", "daysCount": 5, "timeslot_duration": "00:05", "time_zone_name": "Europe/Athens", "colors": {"primary": "#0038f0"}, "rooms": [{"name": "AMPHITHEATRE", "slug": "29-amphitheatre", "guid": "0d33312f-9898-57fe-a432-d49c102f9bc0", "description": "AMPHITHEATRE IOANNIS DESPOTOPOULOS", "capacity": 600}, {"name": "NEW STAGE", "slug": "30-new-stage", "guid": "5a353834-6ccd-5c4e-bb3a-70efdd896ad7", "description": null, "capacity": 100}], "tracks": [], "days": [{"index": 1, "date": "2026-04-15", "day_start": "2026-04-15T04:00:00+03:00", "day_end": "2026-04-16T03:59:00+03:00", "rooms": {"AMPHITHEATRE": [{"guid": "73704f4d-a91b-5bd2-9e95-18db9fa7f6e5", "code": "WH9A7C", "id": 1722, "logo": "https://pretalx.evolutio.pt/media/djangocon-europe-2026/submissions/WH9A7C/54089366098_8c9b7bdd19_cqRLJRZ.jpeg", "date": "2026-04-15T10:00:00+03:00", "start": "10:00", "duration": "00:55", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1722-static-islands-dynamic-sea", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/WH9A7C/", "title": "Static Islands, Dynamic Sea", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "Python's dynamic nature is a feature, not a bug! Sometimes we want type safety too. Let's look at building \"static islands\" around Django's dynamic core. Type-safety where you need it, without sacrificing the flexibility of Python that you know and love.", "description": "Python's dynamic nature isn't a bug\u2014it's a feature. Django leveraged this from\r\nthe start, building elegant APIs that would be impossible in a rigidly typed\r\nsystem. Duck typing, runtime introspection, and flexible interfaces gave us the\r\nexpressiveness we grew up with.\r\n\r\nBut sometimes we want more. Type safety at API boundaries. Auto-completion that\r\nactually works. Data classes instead of ORM objects. The confidence that comes\r\nwith catching errors before runtime.\r\n\r\nThe answer isn't to abandon Python's dynamic core\u2014it's to build static islands\r\nwhere they help. Incremental typing lets us wrap specific layers (like the ORM)\r\nin type-safe interfaces while leaving Django's liquid core untouched.\r\n\r\nThis talk explores when, why, and how to add these type-safe layers, and\r\ndemonstrates Mantle, utilities for typing around Django's liquid core. We'll\r\nkeep the Python you love, with those little extras when you need them.", "recording_license": "", "do_not_record": false, "persons": [{"code": "JHNLPQ", "name": "Carlton Gibson", "avatar": "https://pretalx.evolutio.pt/media/avatars/fa051cf0819267f42d0de75234d7f42a_x4BogAM.jpg", "biography": "Carlton is a former Django Fellow and creator and/or maintainer of multiple open-source projects in the Django ecosystem. He is also the co-host of the Django Chat podcast.", "public_name": "Carlton Gibson", "guid": "b6871547-dbbc-5e0c-a0a0-7b77c8ff5d6e", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/JHNLPQ/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/WH9A7C/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/WH9A7C/", "attachments": []}, {"guid": "8d43667e-f071-5cee-baab-7ff3a5862079", "code": "ZY8UHF", "id": 1809, "logo": null, "date": "2026-04-15T11:00:00+03:00", "start": "11:00", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1809-oh-i-found-a-security-issue", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZY8UHF/", "title": "Oh, I Found a Security Issue", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Ever thought about what happens when someone finds a security issue in Django? How do you disclose an issue responsibly? What happens after that? How does the Django team work on it? What happens until a security release is published? What comes afterward? And what impact have AI and LLMs on Django and its security?", "description": "This talk is your behind the scenes guide to Django's best in class security processes. I\u2019ll give an introduction to how the team handles security issues: the triaging, fixing, disclosure process, and releases.\r\n\r\nI will then review the history of Django\u2019s security issues to identify hotspots and areas to look out for. Lastly, I will explore the impact of AI and LLMs on the security of Django as well as its security team.\r\n\r\nThe talk will give you everything you need, to help you interact with Django\u2019s security team when needed, and show how Django's security process can act as an example for other open source projects.", "recording_license": "", "do_not_record": false, "persons": [{"code": "BWWWMK", "name": "Markus Holtermann", "avatar": "https://pretalx.evolutio.pt/media/avatars/avatar-djangoconeu18-600x_y0DKkyz.jpg", "biography": "Django has been a part of my life for over 15 years. And again, in my current position as a software engineer it's the foundation of the job. While there have been times when I contributed to Django's code base regularly, these times have receded. However, I remain a member of Django's security and ops teams, which I've been on for almost a decade now.", "public_name": "Markus Holtermann", "guid": "76c038f2-4ae3-5fce-ae54-e0a663e4219f", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/BWWWMK/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZY8UHF/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZY8UHF/", "attachments": []}, {"guid": "fa4c17d6-760e-5bf8-af6b-168335c6d310", "code": "ZQE3GP", "id": 1837, "logo": null, "date": "2026-04-15T12:00:00+03:00", "start": "12:00", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1837-atlas-building-a-zero-budget-it-service-management-platform-with-django-in-the-public-sector", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZQE3GP/", "title": "ATLAS: Building a Zero\u2011Budget IT Service Management Platform with Django in the Public Sector", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "ATLAS is a production-grade IT Service Management platform built with Django for the Greek Ministry of Migration and Asylum. Designed and deployed with zero external budget, it centralizes IT requests into a workflow-driven system with Single Sign-On, role-based access control, automation, SLA monitoring, and real-time analytics. The system is used daily across the Ministry and has resulted in 70% faster incident response initiation and 98% user satisfaction.", "description": "This talk presents ATLAS, a real-world Django application built and operated in the public sector under strict governance, security, and resource constraints.\r\n\r\nThe session starts by outlining the organizational challenges of handling IT service requests at scale and why traditional email-based workflows failed. It then dives into the system\u2019s architecture, focusing on workflow-driven design, authentication and authorization strategies, automation with SLA tracking, and observability through metrics and dashboards. The SLA model does not only enforce operational discipline but is also aligned with the organization\u2019s official performance objectives, enabling IT teams to track compliance against organizational targets and support data-driven decision-making.", "recording_license": "", "do_not_record": false, "persons": [{"code": "3EUCPF", "name": "Georgios Poulos", "avatar": null, "biography": "Georgios Poulos holds an MSc in Information Systems and works as an IT expert at the Greek Ministry of Migration and Asylum. Over the past six years, he has designed and developed multiple production-grade Django applications used across the public sector. His work focuses on workflow automation, security, and building sustainable, high-impact systems under real-world organizational constraints.", "public_name": "Georgios Poulos", "guid": "ee0845bd-ae1b-5baf-91f2-51e52f8e5e9c", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/3EUCPF/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZQE3GP/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZQE3GP/", "attachments": [{"title": "Architecture & Workflow Overview", "url": "/media/djangocon-europe-2026/submissions/ZQE3GP/resources/ATLAS_Archite_9gXO5Oh.pdf", "type": "related"}]}, {"guid": "715294d7-a9b3-51f6-907d-7ee522792b45", "code": "X9APYZ", "id": 1752, "logo": null, "date": "2026-04-15T12:35:00+03:00", "start": "12:35", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1752-ai-assisted-contributions-and-maintainer-load", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/X9APYZ/", "title": "AI-Assisted Contributions and Maintainer Load", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "AI-assisted contributions are changing how open source work happens.\r\nThis talk looks at real maintainer experiences from projects like **Django**, Python, GNOME, and OCaml, focusing on review load, responsibility, and the governance questions that appear when AI replaces understanding instead of supporting it.", "description": "**AI tools** are increasingly used by contributors to *read code*, explore codebases, and generate changes. In many open source projects, this is already changing how issues are opened and how pull requests are submitted. While AI can help people get started, it also creates new challenges for maintainers.\r\n\r\nThis talk is based on *real discussions and concrete examples* from the open source community. Maintainers in projects such as **Django**, Python, GNOME, and OCaml report similar patterns: large or unnecessary AI-generated changes, missing design discussion, references to *non-existent APIs*, and contributions that are technically correct but hard to review and maintain. In many cases, work is moved from contributors to already time-limited maintainers.\r\n\r\nThe focus of this talk is not on banning or promoting AI. The shared concern across these communities is **responsibility**. Problems appear when AI replaces *understanding*, *testing*, and *human accountability*, breaking the social processes that open source depends on.\r\n\r\nThe talk also looks at how projects are responding. Some add documentation, disclosure rules, or review guidelines. Others start wider discussions about *governance*, *sustainability*, and *legal risk*. These responses show that the issue goes beyond individual pull requests.\r\n\r\nInstead of giving simple answers, this talk shares the **real questions** the community is asking today, and helps contributors and maintainers think more clearly about the future role of AI in Django and open source projects.", "recording_license": "", "do_not_record": false, "persons": [{"code": "BVRQXW", "name": "Paolo Melchiorre", "avatar": "https://pretalx.evolutio.pt/media/avatars/6b8e2101579190ad96e747e01c279898_Qm0dO2T.jpg", "biography": "I'm **Paolo Melchiorre** (aka `paulox`), a *Python* **backend developer**, *Django* **contributor**, and *Python Software Foundation* **Fellow**.\r\n\r\nAs a member of the *Django Software Foundation*, I serve also as a **board member**. Additionally, I'm a **coach and organizer** for *Django Girls*, and a **navigator** for the *Djangonaut Space* mentorship program.\r\n\r\nIn my community involvement, I **organize** *PyCon Italia*, have **founded** the local *Python Pescara* community, and am a **member** of the *Python Italia* association.\r\n\r\nAs a professional, I'm also a **conference speaker**, **technical blogger** at [**www.paulox.net**](https://www.paulox.net), a *GNU/Linux* **user**, and a *Free Software* **advocate**. My academic background includes a degree in **Computer Engineering** from the *University of Bologna*.", "public_name": "Paolo Melchiorre", "guid": "d412204b-aba9-51c7-9eb6-00d0ec6b4a5e", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/BVRQXW/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/X9APYZ/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/X9APYZ/", "attachments": []}, {"guid": "c44e3b65-47ce-5bf1-b76c-e53a05244e52", "code": "3LKHFS", "id": 1721, "logo": null, "date": "2026-04-15T14:40:00+03:00", "start": "14:40", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1721-reliable-django-signals", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3LKHFS/", "title": "Reliable Django Signals", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "The existing implementation of Django Signals does not address fault tolerance in any way, which makes Signals unreliable for mission critical workflows! In this talk I present an alternative underlying implementation using the new tasks framework in Django 6 which makes Signals fault tolerant and reliable.", "description": "Django signals are extremely useful for decoupling modules and implementing complicated workflows. However, the underlying transport for Django Signals makes them unreliable and subject to unexpected failures.\r\n\r\nIn the talk I demonstrate several strategies for decoupling modules, including Django Signals, and discuss different aspects such as user experience and fault tolerance.\r\n\r\nFinally, I present an alternative underlying transport implementation for Django Signals using the new tasks framework in Django 6 that addresses the shortcomings of all other approaches. The alternative implementation makes Django Signals reliable for mission critical workflow and for applications that require high reliability and fault tolerance.", "recording_license": "", "do_not_record": false, "persons": [{"code": "8QRVC3", "name": "Haki Benita", "avatar": "https://pretalx.evolutio.pt/media/self.png", "biography": "Haki Benita is a software developer and a technical lead. He lived through several hype cycles but he's still standing! Haki built multiple successful products that are used by millions of users every month but he doesn't like to brag about it...\r\n\r\nHaki takes special interest in databases, web development, software design and performance tuning and he writes about it at [hakibenita.com](https://hakibenita.com)", "public_name": "Haki Benita", "guid": "6e53e03e-a417-55be-b357-0de6ca039b4e", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/8QRVC3/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3LKHFS/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3LKHFS/", "attachments": []}, {"guid": "e8cf7d19-a80a-5e53-a100-7b80a2bd2262", "code": "ZLRWH9", "id": 1850, "logo": null, "date": "2026-04-15T15:15:00+03:00", "start": "15:15", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1850-django-forms-in-the-age-of-htmx-the-single-field-form", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZLRWH9/", "title": "Django forms in the age of HTMx: the single field form", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "There are many ways to do \"interesting\" things with forms...\r\n\r\nWith HTMx it is possible to treat any HTML tag as a form, without using form tags. It becomes easy to alter just one field of a form: click on the field to swap out the presentation with a suitable input field, then submit that single field on pressing Enter.\r\n\r\nWhat is not necessarily so easy is adapting the use of Django's forms so that they are used both for validation and rendering of that single field, and smuggling in the necessary context a form widget needs if one skips the &lt;form&gt;-tag and uses widget templates to render the inputs.\r\n\r\nIncidentally it does become easy to have plugin-able forms...\r\n\r\nThis talk will briefly look at previous \"interesting\" (ab)uses of Django forms, followed by demonstrating some hands-on techniques and patterns for working with single fields, using a special made demonstration site and a production service that was converted in 2024-2025 from a SPA using REACT to an MPA using HTMx: Argus.\r\n\r\nDjango: https://docs.djangoproject.com/\r\nHTMx: https://htmx.org\r\nLive Argus demo: https://argus-demo.uninett.no/\r\nArgus code: https://github.com/Uninett/Argus\r\nCode for singlefield demo: https://github.com/Uninett/singlefieldform\r\nSlides: https://github.com/Uninett/singlefieldform/tree/main/slides", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "ZJAQE7", "name": "Hanne Moa", "avatar": null, "biography": "I used to call myself a dual-class sysadmin/developer but lately (+10 years) it's mostly been dev, and mostly backend. Been dabbling with Python since 1.5, and side-eyeing Django forms since 2008. I work for Norway's NREN (basically, the academic internet backbone), Sikt, in a team that open sources All! its! things!", "public_name": "Hanne Moa", "guid": "88575da9-fb31-54ca-b48e-30a970729d0c", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/ZJAQE7/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZLRWH9/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/ZLRWH9/", "attachments": []}, {"guid": "bbbe9016-04e8-52a8-9382-03ad51cfb387", "code": "MSJQLT", "id": 1804, "logo": null, "date": "2026-04-15T16:15:00+03:00", "start": "16:15", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1804-scaling-the-database-using-multiple-databases-with-django", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/MSJQLT/", "title": "Scaling the database - using multiple databases with Django", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "The question is simple: How do you scale Django beyond a single database? The answer isn't simple, but it _is_ fun and interesting.", "description": "As your Django application gets popular, you'll need to scale up. Maybe you need to run more web workers, more CPU cores, or even spread across more servers. This works great, up to a point. \r\n\r\nYour database is likely at the core of your application, but whilst it's easy to throw more resources at a database, it's much harder to scale to multiple. After a while, you'll outgrow a single database. Maybe performance isn't the issue, and instead you need the rock-solid reliability which can only come from multiple database servers.\r\n\r\nDjango supports multiple database connections, but leaves it up to you to manage how to use them and which queries to send where. But, how? How do you split your data between multiple databases? How do you tell Django which to use when? If your infrastructure already has replicas, how can you use them effectively.", "recording_license": "", "do_not_record": false, "persons": [{"code": "CQZJUD", "name": "Jake Howard", "avatar": "https://pretalx.evolutio.pt/media/avatars/IMG_20210413_182503_xMaUEQu.jpg", "biography": "Jake is many things:\r\n\r\n- A Senior Systems Engineer @ [Torchbox](https://torchbox.com/)\r\n- A member of the Django Security Team\r\n- A member of the DSF\r\n- A member of the Security and Core teams for [Wagtail CMS](https://wagtail.org/)\r\n- An avid self-hoster\r\n- [Frequent blogger](https://theorangeone.net)\r\n\r\nA _Jake_ of all trades, if you will\r\n\r\n- Website: [theorangeone.net](https://theorangeone.net)\r\n- Mastodon: [@jake@theorangeone.net](https://mastodon.theorangeone.net/@jake)\r\n- Bluesky: [@theorangeone.net](https://bsky.app/profile/theorangeone.net)", "public_name": "Jake Howard", "guid": "4b677954-2c1b-53d1-9ad5-b4f390782610", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/CQZJUD/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/MSJQLT/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/MSJQLT/", "attachments": []}, {"guid": "6de7f069-ff92-5c18-b567-54f73fc4530e", "code": "YPQ8YK", "id": 1917, "logo": null, "date": "2026-04-15T16:50:00+03:00", "start": "16:50", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1917-partitioning-very-large-tables-with-django-and-postgresql", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/YPQ8YK/", "title": "Partitioning very large tables with Django and PostgreSQL", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Database tables in PostgreSQL cause increasing performance and maintenance issues as they grow larger. We look at ways of managing those problems with partitioning, the choices available, and how to partition existing tables at Kraken scale with Django.", "description": "## Introduction\r\n\r\nDatabase systems like PostgreSQL provide a useful layer of abstraction: you can store and retrieve data using SQL (via the Django ORM) without having to worry about how the database manages the data under the hood. Database indexes enable fast queries, and automatic vacuuming cleans up old row versions and deleted rows. But as tables become extremely large, the abstraction starts to break down, and performance issues become apparent. In this talk, I'll describe what options are available (including partitioning) to manage large database tables, and how we're approaching this problem at Kraken Tech.\r\n\r\n## The problem\r\n\r\nAt Kraken Tech, one of our installations of Kraken has a table with about 9 billion rows and is about 3 TB in size. This table takes around 20 hours to vacuum, and it requires vacuuming about once a day. During a recent bigint conversion project (see my talk from DjangoCon Europe 2025), this long and frequent vacuuming interfered with the other maintenance work we were doing on the table. We'd like to reduce the time taken to vacuum; other performance improvements would also be welcome. We'd also like the solution we adopt to be generally applicable to other large tables.\r\n\r\nOne approach would be to delete old data from the table and store it in another storage system instead (such as S3). However, that would also require application-level changes to enable access to the old data, and those changes wouldn't necessarily generalise to other tables.\r\n\r\nAnother approach would be to start with a brand new table for all new data. The new table will be fast (until it grows to the size of the old table), and the old table will stop needing to be vacuumed once no more writes to it are needed. This approach will also require application-level changes to access both databases, and will only defer the problem, not solve it.\r\n\r\nA third approach is to partition the table using PostgreSQL's native support for partitioning. Partitioning splits a large table into a number of smaller tables, with each row being assigned to one of the partitions depending on the value of its partition key. These smaller tables have their own indexes and are vacuumed separately as needed, which will address the problem of slow vacuuming. And accessing a partitioned table is transparent to the application, mostly.\r\n\r\n## Requirements, choices and compromises\r\n\r\nPostgreSQL supports different types of partitioning: range, list and hash; that's one choice we need to make. Another choice is how many partitions will be used, and when to add new ones.\r\n\r\nBut the biggest choice, and the one with the most requirements and consequences, is which column(s) to use for the partition key. There usually will be a compromise here, since the partition key that offers the most performance improvement will often not support desired constraints. And Django imposes its own requirements that affect the choice of partition key.\r\n\r\n## Partitioning existing tables\r\n\r\nFor our use case at Kraken Tech, we would like to partition existing tables without imposing any system downtime. The PostgreSQL extension `pg_partman` provides support for \"online\" partitioning that enables this, but via manual processes that don't scale across the large number of installed systems we support. We have developed a Python package `psycopack` for replicating PostgreSQL tables and performing schema changes in the process; we are working on enhancing that tool to support partitioning as well.", "recording_license": "", "do_not_record": false, "persons": [{"code": "SKMQND", "name": "Tim Bell", "avatar": "https://pretalx.evolutio.pt/media/avatars/Tim_Bell_-_photo_by_Mark_Hawkins_for_PyCon_UK_8LBAXio.jpg", "biography": "Tim has been a system administrator and, more recently, a Python/Django developer. He has particular interests in databases, performance, and incident management. He works for Kraken Technologies Australia, part of the Octopus Energy Group.\r\n\r\nPhoto: Mark Hawkins for PyCon UK (adapted); CC BY 2.0", "public_name": "Tim Bell", "guid": "59e695ef-2b70-5445-8545-fa9235513685", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/SKMQND/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/YPQ8YK/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/YPQ8YK/", "attachments": []}], "NEW STAGE": [{"guid": "7ccfdb41-a2ea-56df-9b5e-25d89090ef4a", "code": "KYPGJ8", "id": 2105, "logo": null, "date": "2026-04-15T11:00:00+03:00", "start": "11:00", "duration": "01:30", "room": "NEW STAGE", "slug": "djangocon-europe-2026-2105-django-from-the-trenches-advanced-indexing-and-concurrency-in-django-and-postgresql", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/KYPGJ8/", "title": "Django from the trenches: Advanced Indexing and Concurrency in Django and PostgreSQL", "subtitle": "", "track": null, "type": "Long Workshop", "language": "en", "abstract": "Building applications to serve actual users is really hard! Traffic spike, data accumulates, queries becomes slow, response time suffer and you sre left completely baffled!\r\n\r\nIn this workshop we'll optimize real-life scenarios in a Django application using advanced indexing techniques in PostgreSQL. We will also identify and tackle concurrency issues and experiment with different approaches to prevent them, without bringing the system to a halt.\r\n\r\nBy the end of this workshop you'll learn how to prepare your Django application for the real life.", "description": "Building applications to serve actual users is really hard! Traffic spike, data accumulates, queries becomes slow, response time suffer and you sre left completely baffled!\r\n\r\nIn this workshop we'll optimize real-life scenarios in a Django application using advanced indexing techniques in PostgreSQL. We will also identify and tackle concurrency issues and experiment with different approaches to prevent them, without bringing the system to a halt.\r\n\r\nBy the end of this workshop you'll learn how to prepare your Django application for the real life.", "recording_license": "", "do_not_record": false, "persons": [{"code": "8QRVC3", "name": "Haki Benita", "avatar": "https://pretalx.evolutio.pt/media/self.png", "biography": "Haki Benita is a software developer and a technical lead. He lived through several hype cycles but he's still standing! Haki built multiple successful products that are used by millions of users every month but he doesn't like to brag about it...\r\n\r\nHaki takes special interest in databases, web development, software design and performance tuning and he writes about it at [hakibenita.com](https://hakibenita.com)", "public_name": "Haki Benita", "guid": "6e53e03e-a417-55be-b357-0de6ca039b4e", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/8QRVC3/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/KYPGJ8/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/KYPGJ8/", "attachments": []}, {"guid": "08f04eb2-8428-51a9-a220-40bcbbfd5975", "code": "DDP7TX", "id": 2106, "logo": null, "date": "2026-04-15T15:15:00+03:00", "start": "15:15", "duration": "01:30", "room": "NEW STAGE", "slug": "djangocon-europe-2026-2106-llms-txt-and-django", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DDP7TX/", "title": "llms.txt and Django", "subtitle": "", "track": null, "type": "Long Workshop", "language": "en", "abstract": "The llms.txt format is an emerging standard to structure information for Large Language Models. It\u2019s a desirable addition to the docs of Python packages.\r\n\r\nLet\u2019s review how to adopt it! We\u2019ll discuss the fundamentals of the format and its benefits as a user of the docs, and as a maintainer. How to produce and consume those files across different tools (Sphinx, mkdocs, Django). How to optimize them for different LLMs with an eval suite. Tools and techniques you should be able to reuse through other engineering tasks with LLMs.", "description": "The llms.txt format is an emerging standard to structure information for Large Language Models. It\u2019s a desirable addition to the docs of Python packages. We have been [busy adopting it for Wagtail](https://wagtail.org/blog/llmstxt-preparing-wagtail-docs-for-ai-tools/), and can now share how it all went.\r\n\r\nLet\u2019s review how to adopt it! We\u2019ll discuss the fundamentals of the format and its benefits as a user of the docs, and as a maintainer. How to produce and consume those files across different tools (Sphinx, mkdocs, Django). How to optimize them for different LLMs with an eval suite. Tools and techniques you should be able to reuse through other engineering tasks with LLMs.", "recording_license": "", "do_not_record": false, "persons": [{"code": "Y8QPW8", "name": "Thibaud Colas", "avatar": "https://pretalx.evolutio.pt/media/avatars/Y8QPW8_seORmep.jpg", "biography": "Diving deep on AI in the Django ecosystem - [AI and developer experience](https://wagtail.org/blog/ai-and-developer-experience-wagtail-community-survey/), [design principles and ethos](https://wagtail.org/blog/ai-in-the-cms-steering-the-ecosystem/), [open source AI landscape](https://wagtail.org/blog/open-source-ai-we-use-to-work-on-wagtail/).\r\n\r\nI\u2019m a volunteer & contributor @ [Django Software Foundation](https://www.djangoproject.com/), core team & product lead for [Wagtail](https://wagtail.org/). Engineering @ [Torchbox](https://torchbox.com/). Accessibility, AI, climate action. Find me on: [Twitter](https://x.com/thibaud_colas), [Bluesky](https://bsky.app/profile/thibaudcolas.bsky.social), [Mastodon](https://fosstodon.org/@thibaudcolas), [LinkedIn](https://www.linkedin.com/in/thibaudcolas/), [GitHub](https://github.com/thibaudcolas), [thib.me](https://thib.me/).", "public_name": "Thibaud Colas", "guid": "a5df7247-4be1-5292-a0cf-20164adde181", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/Y8QPW8/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DDP7TX/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DDP7TX/", "attachments": []}]}}, {"index": 2, "date": "2026-04-16", "day_start": "2026-04-16T04:00:00+03:00", "day_end": "2026-04-17T03:59:00+03:00", "rooms": {"AMPHITHEATRE": [{"guid": "cf63d321-5a77-5bdd-95b9-55b6da0cfb80", "code": "3BGDDQ", "id": 2029, "logo": null, "date": "2026-04-16T09:30:00+03:00", "start": "09:30", "duration": "00:55", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-2029-a-practical-guide-to-agentic-coding-for-django-developers", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3BGDDQ/", "title": "A Practical Guide To Agentic Coding For Django Developers", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "AI Agents have become increasingly good at generating code. Developers who know how to use agentic tools as they program can increase their productivity significantly. In this talk, Marlene will share how Django Developers can get the most out of coding agents in their development workflows. She'll walk through how she uses MCP (Model Context Protocol), Agent Skills and Instructions to create semi-autonomous agents that can complete multi-step tasks end-to-end. She'll also walk through best practices for validating the output of agents end to end with unit tests and Playwright. As part of this talk we'll also discuss the societal implications of AI on developers and how we can best prepare for the future thats both coming and already here.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "MSY7X7", "name": "Marlene Mhangami", "avatar": "https://pretalx.evolutio.pt/media/avatars/MSY7X7_DOFt1vw.jpeg", "biography": "Marlene is a Senior Developer Advocate specializing in Python and AI at Microsoft, a computer scientist, keynote speaker and explorer. She is the current co-chair of the Association for Computing Machinery(ACM) practitioner board, was the previous vice chair of the Python Software Foundation and led the first PyCon Africa.", "public_name": "Marlene Mhangami", "guid": "e55a44a1-cc4b-5675-8985-0014c29986e4", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/MSY7X7/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3BGDDQ/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3BGDDQ/", "attachments": []}, {"guid": "1b549aac-2a67-5672-907b-5259ee536fb5", "code": "9GZGLP", "id": 1919, "logo": null, "date": "2026-04-16T10:30:00+03:00", "start": "10:30", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1919-digitising-historical-caving-data-with-python-and-django", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/9GZGLP/", "title": "Digitising Historical Caving Data with Python and Django", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "A pipeline using Python, Django, and LLMs to extract, structure and publish 2,700 incidents, turning old typewritten documents into useful data.", "description": "Endless quantities of old but critically important data is trapped in paper journals and reports across the world. Is it possible to extract this data and make it available to the masses, even when the data is highly specialised and of poor quality? That is what I did for reports of caving incidents and accidents dating back 50 years. \r\n\r\nThe National Speleological Society has published American Caving Accidents since 1967, documenting thousands of incidents, and despite being freely available as PDFs, these are unindexed, poorly scanned, and basically impossible to use as a learning tool.\r\n\r\nIn this talk, I'll show you how I built a system that programmatically processed these documents into a structured, publicly searchable database. You'll see the full pipeline: how to OCR degraded/low quality documents, custom code to untangle multi-column layouts, and LLM processing stages to extract and format the data whilst maintaining 100% accuracy.\r\n\r\nI'll cover some of the more unusual challenges: handling dates like \"Autumn 1996\" with a custom model field, building a pluggable processing step system in Django, and how to intake and normalise large quantities of low quality data in a relational database.\r\n\r\nHave you ever looked at a stack of old documents and thought: \"there's valuable data in here, if only someone could extract it\"? This talk is about what happens when you actually try.", "recording_license": "", "do_not_record": false, "persons": [{"code": "GJUXR3", "name": "Andrew Northall", "avatar": "https://pretalx.evolutio.pt/media/avatars/GJUXR3_5Y3b9Pw.jpg", "biography": "I am a software developer from London who works with Python and Django professionally, as well as maintaining several open source Python and Django web services related to caving and amateur radio.\r\n\r\nOther than that, I have a lot of enthusiasm for linux system administration and platform engineering, and I enjoy a bit of TypeScript and Rust every now and then.\r\n\r\nPlease visit me at [my personal site](https://northall.me.uk/) or [LinkedIn](https://linkedin.com/in/andrew-northall/).", "public_name": "Andrew Northall", "guid": "b4c4c1f7-e4a0-572c-9a08-8d3760e475c0", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/GJUXR3/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/9GZGLP/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/9GZGLP/", "attachments": []}, {"guid": "bbe76569-9747-5166-9c5f-9f8894986d18", "code": "DLX7N7", "id": 1856, "logo": null, "date": "2026-04-16T11:05:00+03:00", "start": "11:05", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1856-beyond-print-observability-to-debug-you-django-apps", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DLX7N7/", "title": "Beyond print(): Observability to debug you Django apps", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Most Django developers have been there: something is slow, users are complaining, and the first instinct is to sprinkle `print()` statements or scroll through server logs hoping for a clue. Without proper observability, diagnosing performance bottlenecks in a Django application (or any application, for that matter) is guesswork.\r\nObservability is the practice of understanding what is happening inside your application by looking at the signals it produces: traces, metrics, and logs. While the concept is well-established in infrastructure and DevOps circles, it remains under-explored in the day-to-day workflow of many Django developers. Yet Django's middleware architecture, ORM, and request/response cycle make it particularly well-suited for instrumentation.\r\n\r\nIn this talk, I will walk through how to add observability to a Django app using Pydantic Logfire. I'll cover the **Four Golden Signals of observability** (latency, traffic, errors, and saturation), explain why they matter for your Django app, and show how to expose them with minimal setup. Through a live demo, you will see how to use metrics dashboards in action to monitor your system. You'll also see how to leverage AI to query your logs and traces in natural language or with SQL.\r\nAttendees will leave this talk with a practical, reproducible workflow for adding observability to their own Django projects, along with an understanding of which signals to monitor and why.\r\n\r\nPrerequisites: Attendees should be comfortable with Django basics. No prior experience with observability tooling is required.\r\nOutline breakdown:\r\n* 0\u20133 min **The problem**: Why print() and log scrolling don\u2019t scale.\r\n* 3\u20137 min **Observability 101 for Django developers**: The Four Golden Signals (latency, traffic, errors, saturation) explained with Django-specific examples.\r\n* 7\u201312 min **Setting up Observability - Instrumenting observability in a Django project**: logging handler, Django instrumentation, PostgreSQL instrumentation. Live demo: showing traces appearing in the Live view.\r\n* 12\u201319 min **Built-in dashboards and system metrics**: Enabling system metrics. Walkthrough of System Metrics dashboard. Mapping charts to the Golden Signals (CPU \u2192 saturation, process count \u2192 traffic). Building custom error charts with SQL queries. Live demo.\r\n* 19\u201323 min **Putting it all together**: How to think about what to monitor. Practical tips for setting thresholds and correlating signals across dashboards.\r\n* 23\u201325 min Wrap-up: Summary, resources, and where to go next.\r\n* 25-30 min: Q&A", "description": "Most Django developers have been there: something is slow, users are complaining, and the first instinct is to sprinkle `print()` statements or scroll through server logs hoping for a clue. Without proper observability, diagnosing performance bottlenecks in a Django application (or any application, for that matter) is guesswork.\r\nObservability is the practice of understanding what is happening inside your application by looking at the signals it produces: traces, metrics, and logs. While the concept is well-established in infrastructure and DevOps circles, it remains under-explored in the day-to-day workflow of many Django developers. Yet Django's middleware architecture, ORM, and request/response cycle make it particularly well-suited for instrumentation.\r\n\r\nIn this talk, I will walk through how to add observability to a Django app. I'll cover the **Four Golden Signals of observability** (latency, traffic, errors, and saturation), explain why they matter for your Django app, and show how to expose them with minimal setup. Through a live demo, you will see how to use observability standards to monitor your system. You'll also see how to leverage AI to query your logs and traces in natural language or with SQL.\r\nAttendees will leave this talk with a practical, reproducible workflow for adding observability to their own Django projects, along with an understanding of which signals to monitor and why.", "recording_license": "", "do_not_record": false, "persons": [{"code": "L9XBYZ", "name": "La\u00eds Carvalho", "avatar": "https://pretalx.evolutio.pt/media/avatars/L9XBYZ_2wpVWc3.jpg", "biography": "La\u00eds Carvalho is a Developer Advocate & Growth Marketing at Pydantic, where she works on Logfire and the Pydantic ecosystem. She previously championed Kedro at QuantumBlack (McKinsey) and Quansight. Her throughline: making complex developer tools feel approachable. She's currently pursuing a postgraduate in Innovation and Enterprise Development at Trinity College Dublin.\r\nAn EuroPython Society Fellow and 2025 PSF Community Service Award recipient, La\u00eds has served on the boards of EuroPython and Python Ireland, and co-founded HumbleData \u2014 a nonprofit mentoring underrepresented minorities in Python and Data Science.\r\nShe advocates for monitoring tools that help developers sleep better at night and believes diverse teams build better systems. Outside of tech, you'll find her experimenting with watercolour painting or on an improv stage.", "public_name": "La\u00eds Carvalho", "guid": "4b3d78c3-b370-5775-9183-faa816cf3ee2", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/L9XBYZ/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DLX7N7/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DLX7N7/", "attachments": []}, {"guid": "6cdf2412-7492-5577-a5aa-7e9761e650f0", "code": "D3X8M9", "id": 1868, "logo": null, "date": "2026-04-16T12:05:00+03:00", "start": "12:05", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1868-role-based-access-control-in-django-how-we-forked-guardian", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/D3X8M9/", "title": "Role-based access control in Django - How we forked Guardian", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Django's built-in access control system is very good for basic operations and Guardian is a natural extension to the object level. However, our customers wanted more: a group hierarchy, just-in-time privileged access, delegating permissions to other users, custom permissions. This talk tells the story of how an authentication company built a role-based authorization system for Django.", "description": "Django's built-in access control system is very good for basic operations and Guardian is a natural extension to the object level. However, our customers wanted more: a group hierarchy, just-in-time privileged access, delegating permissions to other users, custom permissions. This talk tells the story of how an authentication company built a role-based authorization system for Django.", "recording_license": "", "do_not_record": false, "persons": [{"code": "TDJ7A8", "name": "Gerg\u0151 Simonyi", "avatar": null, "biography": "I'm a senior backend engineer at [authentik](https://goauthentik.io) from Budapest, Hungary. My recent work has been focused on authorization, specifically [RBAC](https://en.wikipedia.org/wiki/Role-based_access_control) and [ABAC](https://en.wikipedia.org/wiki/Attribute-based_access_control). I promote free software and I am an avid self-hoster. I have a background in mathematics.", "public_name": "Gerg\u0151 Simonyi", "guid": "1e1f6ea0-231a-5066-b0d6-52835c711777", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/TDJ7A8/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/D3X8M9/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/D3X8M9/", "attachments": []}, {"guid": "3ccd4fdd-2b9d-5799-861b-597b9364441c", "code": "WUZSPX", "id": 1861, "logo": "https://pretalx.evolutio.pt/media/djangocon-europe-2026/submissions/WUZSPX/djadm2-light-header_N4xKB4S.png", "date": "2026-04-16T12:40:00+03:00", "start": "12:40", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1861-is-it-time-for-a-django-admin-rewrite-if-so-how", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/WUZSPX/", "title": "Is it time for a Django Admin rewrite? If so, how?", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Django's built-in admin is powerful, but it's essentially a separate framework within Django and it's 20 years old.\r\n\r\nWouldn't it be nice to be able to work with an admin interface that works like the rest of Django, built on generic views, plugins, and view factories? This is the idea I explored: a proof-of-concept Django admin replacement, powered by pluggy and generic views, where CRUD operations are just actions, knowledge transfers both ways, and everything feels like Django.\r\n\r\nLet's explore together the concepts and ideas behind it.", "description": "What if customizing Django's admin felt like writing any other Django view? Not just a cosmetic refresh, but a radically new approach relying on Django itself, factory-generated views and with a plugin-first design.\r\n\r\nTalk Structure:\r\n\r\n1. The Problem Space (5 min)\r\n    - Django admin's 20-year legacy: what it got right and where it shows its age\r\n    - The extension dilemma: 3rd-party ecosystem and collisions between extensions\r\n    - Developer experience gap: different patterns for regular Django vs. admin\r\n    - Community feedback: recurring requests that would be hard to implement\r\n2. Architectural Foundations (7 min)\r\n    - View Factories: How views get generated dynamically\r\n    - Action System: Actions are the recipes followed by view factories\r\n    - Plugin Hooks: djp/pluggy integration and hook patterns\r\n    - Out-of-the-box enhancements\r\n3. Examples & Demo (8 min)\r\n    - Starting with familiar API: @register(Product) and list_display\r\n    - Customizing `list_display`\r\n    - Customizing `layout`\r\n    - Creating your own plugins\r\n    - Testing tools: `BaseCRUDTestCase`\r\n    - Demo (pre-recorded)\r\n4. Migration & Adoption (4 min)\r\n    - Running side-by-side with existing admin\r\n    - Early adopters (well-know projects that already have plugins)\r\n    - Extension compatibility matrix: no-effort, medium-effort, hard cases\r\n5. The Path Forward (2 min)\r\n    - What's next: roadmap and timeline\r\n    - Other potential benefits mid-term\r\n    - Call to action", "recording_license": "", "do_not_record": false, "persons": [{"code": "XREAEA", "name": "Emma Delescolle", "avatar": "https://pretalx.evolutio.pt/media/avatars/profile_pRwiH7a.jpg", "biography": "Long-time pythonista, PSF & DSF member, Django fan, electronics enthusiast, author of django-admin-deux and other OSS libraries\r\n\r\nI am from Belgium and have been involved in open-source at different levels for about 20 years. I am a member of the Django Steering Council for the 6.x cycle.\r\n\r\nOne of the things I enjoy the most is sharing knowledge with others. And this is why I enjoy writing tutorials as well as giving talks and workshops.", "public_name": "Emma Delescolle", "guid": "67c5d47f-59b8-5e67-843f-896eca790506", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/XREAEA/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/WUZSPX/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/WUZSPX/", "attachments": []}, {"guid": "b3d8beda-4a3b-5711-b6b1-47f5e46dfcf8", "code": "BC3BJY", "id": 1737, "logo": null, "date": "2026-04-16T14:40:00+03:00", "start": "14:40", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1737-django-task-workers-in-subinterpreters-single-server-django-applications-without-process-overhead", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/BC3BJY/", "title": "Django Task Workers in Subinterpreters: Single-Server Django Applications Without Process Overhead", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Deploying Django with background tasks usually means juggling Celery, Redis, and separate worker processes which often mean adding complexity and operational overhead.\r\n\r\nWhat if you could run everything in a single process while keeping isolation and performance?", "description": "Deploying Django applications with background tasks typically requires managing multiple processes and queues. But what if you could run everything in a single process without sacrificing isolation or performance?\r\n\r\nThis talk shows how Python 3.14's `subinterpreters` enable a practical pattern for self-contained Django applications:\r\n\r\n**The Pattern**:\r\n- Web server and task workers run in separate subinterpreters within one process\r\n- True isolation prevents memory leaks and state contamination between components\r\n- Simplified deployment: one process, one server, one application\r\n\r\n**What This Solves:**\r\n- **Deployment simplicity**: No separate worker processes, no queue infrastructure\r\n- **Resource efficiency**: Shared memory space with isolated execution\r\n- **Self-contained applications**: Perfect for internal tools, small services, or edge deployments\r\n\r\n**We'll walk through code showing:**\r\n- Setting up Django web server and task workers in InterpreterPoolExecutor\r\n- Inter-interpreter communication using shared queues between webserver and task worker\r\n- We will also look at a version using PostgreSQL as a backend and how to run tasks\r\n- Running CPU-intensive tasks (image processing, PDF parsing) without blocking web responses\r\n- Gotchas and errors that occur, how to monitor them, and how to build in a mechanism for recovery\r\n- **Error recovery mechanisms**:\r\n  - Worker subinterpreter crash detection and automatic restart\r\n  - Graceful shutdown handling for in-flight tasks\r\n\r\n**We will also discuss:**\r\n- Limited third-party library support\r\n- Difficulties in exception handling and retry mechanisms\r\n\r\nThis is a practical pattern for real Django applications that need background processing without the complexity of traditional distributed task queues. You'll leave with concrete examples you can adapt for your own single-server Django deployments.\r\n\r\n**Target audience**: Django developers who deploy their own applications and want simpler background task processing.", "recording_license": "", "do_not_record": false, "persons": [{"code": "PSQY8D", "name": "Melhin Ahammad", "avatar": "https://pretalx.evolutio.pt/media/avatars/melhin_pic_image_VDfkxJv.jpeg", "biography": "Software engineer with over a decade of experience specializing in Python and web development. I've built scalable systems across industries (marketplaces, fantasy sports, cybersecurity) and geographies, with deep expertise in Django, distributed architectures, and cloud infrastructure.\r\n\r\nWhen not coding, I advocate for protocols over platforms, explore federated internet technologies, and geek out on self-hosting. My non-tech passions include studying history , human migration and geopolitics.", "public_name": "Melhin Ahammad", "guid": "8f589a71-cc4f-5a47-9e9a-7688c11f86e8", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/PSQY8D/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/BC3BJY/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/BC3BJY/", "attachments": []}, {"guid": "b9558937-fd20-59b6-b1ba-aadaf5693898", "code": "UJZX9Z", "id": 1887, "logo": "https://pretalx.evolutio.pt/media/djangocon-europe-2026/submissions/UJZX9Z/Talk_image_Jochen_2026_RcnkSKc.jpeg", "date": "2026-04-16T15:15:00+03:00", "start": "15:15", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1887-when-saas-is-not-allowed-shipping-django-as-a-desktop-app", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/UJZX9Z/", "title": "When SaaS Is Not Allowed: Shipping Django as a Desktop App", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "What if your Django app cannot rely on servers at all? This talk shows how to package Django inside Electron for confidential, offline, compute-heavy workloads, based on Steel-IQ, an open-source steel-industry simulation tool. You will see a production architecture running across macOS, Windows, and Linux, plus practical lessons from building and running it.", "description": "Some teams face constraints that make standard web deployment impossible: confidential data that must never leave user machines, air-gapped environments, and workloads that are too expensive to run centrally.\r\n\r\nThis talk presents a production pattern for turning Django into a desktop application by packaging it inside Electron. The case study is Steel-IQ, an open-source steel-industry simulation tool for multi-decade decarbonization scenarios, shipped for local execution with sensitive data.\r\n\r\nStructure (30 minutes):\r\n1. Why this architecture exists: confidentiality, offline environments, heavy compute.\r\n2. System design: Electron + Django + django-tasks workers + SQLite (including WAL mode).\r\n3. Packaging and distribution: python-build-standalone, uv, installers, and update paths via GitHub Actions.\r\n4. Production failure modes: startup checks, graceful shutdown, orphan process cleanup, migrations, and memory behavior.\r\n5. Demonstration and decision checklist: when this approach is right, and when to choose alternatives.\r\n\r\nAudience and level:\r\n- Intermediate to advanced Django developers.\r\n- Useful for teams building internal tools, offline-first products, or applications with strict data constraints.\r\n- No prior Electron experience required.\r\n\r\nAttendee takeaways:\r\n1. A reference architecture for embedding Django inside Electron in production.\r\n2. A concrete packaging strategy for standalone Python across platforms.\r\n3. Process-management patterns for reliability and recovery.\r\n4. Operational lessons for long-running local workloads.\r\n5. A decision framework for when desktop-packaged Django is a fit.", "recording_license": "", "do_not_record": false, "persons": [{"code": "7AHZEN", "name": "Jochen Wersd\u00f6rfer", "avatar": "https://pretalx.evolutio.pt/media/Jochen_dunkel.jpeg", "biography": "Jochen Wersd\u00f6rfer is a freelance software developer based in D\u00fcsseldorf, Germany, with more than 20 years of Python experience. He specializes in Django, data science, and machine learning, and works on systems where architecture must satisfy strict operational constraints. He previously spoke at DjangoCon Europe 2021 and FOSDEM 2025, and co-hosts the German Python Podcast. He works across web and desktop Django deployments, focusing on reliability and maintainability in production environments. He maintains open-source projects including django-cast and regularly writes about practical Django architecture and operations.", "public_name": "Jochen Wersd\u00f6rfer", "guid": "c07a7fbf-ca5e-5f70-82ce-04461c0af6a7", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/7AHZEN/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/UJZX9Z/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/UJZX9Z/", "attachments": []}, {"guid": "933a94c8-69c0-5d7d-847e-f0d2062ae952", "code": "XLSYHM", "id": 1858, "logo": null, "date": "2026-04-16T16:15:00+03:00", "start": "16:15", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1858-advanced-orm-kung-fu-for-on-demand-filtering-sorting-and-summing-40-million-financial-transactions", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/XLSYHM/", "title": "Advanced ORM kung-fu for on-demand filtering, sorting, and summing 40 million financial transactions", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Fetching some items from the database, creating a grouped list of those items with a bunch of calculations on related items... sounds super-easy in python. Alas, in my use case,it made me include a \"please wait while we're generating the data\" modal in the frontend.  \r\nThat's when I remembered a dear friend saying \u201cWhatever it is you have to do, Postgres can do it, and fast!\u201d Enter the ORM and its deep bag of tricks- chained annotations, subqueries, window functions, conditionals-in-query, digging into JSONB-arrays, and all this with no raw SQL (almost).", "description": "When the base data is a collection of 40 million postings in a table that grows longer every day, distributed across 472,000 accounts on roughly 5,000 properties; when the use case is filtering, grouping, summing, and sorting these; and when all of this has to happen on-demand for users trying to keep track of what the real-time financial situation of their property is- that's when you realise that using the ORM for mere data access and working the data in Python might not be the ticket. And, when users suddenly want to compare their property to some of the 5,000 others, your Python-first approach will expose the users to a considerable wait which, frankly, can be a bit embarrassing. You don't want to be that guy. \r\nI'm going to talk about how I pushed all this heavy lifting to Postgres using the Django ORM and (almost) no raw SQL - with techniques like chained annotations, window functions for cumulative summing, subqueries with OuterRef, conditional statements in the query, and, for extra fun, digging into JSONB-arrays because hey- there's a json blob describing how all of this data finally has to be sorted. I'll also be touching on the subject of materialized views. The benefits of this approach are not only dramatically better performance (what my friend said...) but also, super-readable and solid code.\r\nIf you're a Django developer working with large and growing datasets, or if you're curious how your app can benefit from the performance of Postgres without writing raw SQL, this talk is for you.", "recording_license": "", "do_not_record": false, "persons": [{"code": "NP83RK", "name": "Mathias Wedeken", "avatar": null, "biography": "I've been developing in Django since 2017, as part of the team that has built EG Probo, a property management platform with, as of 2026, approx. 300,000 users. I also do quite a bit of Elixir development. Oh, and I play and teach double-bass.", "public_name": "Mathias Wedeken", "guid": "6f1d444f-d7fb-5c6c-88d2-a42029a47325", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/NP83RK/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/XLSYHM/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/XLSYHM/", "attachments": []}], "NEW STAGE": [{"guid": "0b07e8ab-1efa-5af3-921d-58dc1fe00126", "code": "8QGZVD", "id": 1921, "logo": null, "date": "2026-04-16T11:05:00+03:00", "start": "11:05", "duration": "01:30", "room": "NEW STAGE", "slug": "djangocon-europe-2026-1921-how-to-understand-the-employer-s-perspective-when-you-apply-for-a-job", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/8QGZVD/", "title": "How to understand the employer's perspective when you apply for a job", "subtitle": "", "track": null, "type": "Long Workshop", "language": "en", "abstract": "I have hired several dozen people for numerous different roles, I have interviewed hundreds, and reviewed thousands of applications - and I see the avoidable mistakes that are made over and over again. In this workshop I will share the employer's perspective, to help participants do better in their quest for a new role.", "description": "One of roles at Canonical is hiring lead. Since 2022, I have hired several dozen people for numerous different roles. I have interviewed hundreds, and reviewed thousands of applications.\r\n\r\nA candidate's expectations of what they ought to do can be far apart from that of a prospective employer. I have seen hundreds of candidates fare much less well in the process than they should have done, simply because they were not able to understand the process from the employer's perspective.\r\n\r\nIt _particularly_ harms candidates unfamiliar with the industry, from other cultures, or without personal networks of people who are already industry insiders. They make unnecessary mistakes. They emphasise and focus on the wrong things. They neglect things that could give them real advantage. \r\n\r\nIt's one of my missions in life to help address that unfairness.\r\n\r\nI want to share and explain the employer's perspective, so that applying for jobs becomes less like trying to understand the workings of a black box. I will also show how to approach job applications in ways that help a candidate provide what the employer needs.\r\n\r\nThis is a hands-on workshop, in which participants will have the chance to revise their own approaches based on insider insights, There will also be plenty of opportunity for questions and discussion of strategy and technique, in writing CVs, submitting applications and taking part in interviews and assessments.\r\n\r\nThere's a vast amount of bad advice and false information about how to succeed as a job applicant. The perspectives and advice in this session come directly from my own position and experience as someone who assesses, interviews and hires candidates: they are what I wish all the candidates I meet already knew and did.", "recording_license": "", "do_not_record": false, "persons": [{"code": "FDRCZ3", "name": "Daniele Procida", "avatar": "https://pretalx.evolutio.pt/media/Daniele_300x400.JPG", "biography": "I am a Director of Engineering at Canonical in Engineering Excellence. My work is concerned with engineering practice leadership and transformation.\r\n\r\nI enjoy helping organise community conferences for Python and Django. That includes multiple editions of DjangoCon Europe, as well as the first editions of PyCon Africa and DjangoCon Africa.  \r\n\r\nI also enjoy helping people and open-source projects improve their documentation.", "public_name": "Daniele Procida", "guid": "462ff4e3-40c1-5cab-8372-4fa62a6153fb", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/FDRCZ3/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/8QGZVD/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/8QGZVD/", "attachments": []}, {"guid": "7f794a73-7b0f-5c37-a965-7f1b17896c4f", "code": "S8GYY9", "id": 1883, "logo": "https://pretalx.evolutio.pt/media/djangocon-europe-2026/submissions/S8GYY9/AI-ethics-iStock_zcwlBP0.jpg", "date": "2026-04-16T15:15:00+03:00", "start": "15:15", "duration": "01:30", "room": "NEW STAGE", "slug": "djangocon-europe-2026-1883-django-and-ai-a-community-conversation", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/S8GYY9/", "title": "Django and AI: A Community Conversation", "subtitle": "", "track": null, "type": "Long Workshop", "language": "en", "abstract": "A facilitated Open Space workshop bringing the Django community together to collectively explore, debate and document the key themes, concerns and opportunities around Django and generative AI \u2013 from developer tools to ethics, policy and beyond.", "description": "The Django community is at a pivotal moment in its relationship with generative AI. From code generation tools reshaping developer workflows to ethical questions about training data and environmental impact, there's no shortage of opinions, but limited space for structured, collective sense-making. This workshop proposes a facilitated Open Space-style discussion that brings the Django community together to surface, explore, and document the key themes, concerns and opportunities around Django and AI. Rather than prescribing answers, we want to harness the room's collective expertise to map the landscape as practitioners experience it.\r\n\r\nThe session, hosted by Thibaud Colas and Laura Gates, will use a participatory format drawn from Open Space Technology, where attendees propose and lead breakout discussions around the sub-topics that matter most to them \u2013 whether that's AI-assisted development, ethical frameworks for Django projects integrating LLMs, the Django Software Foundation's approach to AI policy, or something we haven't anticipated. Thibaud brings deep technical leadership and a long-standing commitment to ethical open-source practice as product lead for the Wagtail CMS, while Laura brings experience facilitating open space and participatory events across academic, charity and corporate settings. Together, we'll synthesise the session's outputs into a documented resource for the wider Django community.\r\n\r\nThis workshop is for anyone in the Django ecosystem \u2013 whether you're enthusiastic about AI, cautious, or still figuring out where you stand. No prior AI expertise is needed; the goal is an inclusive, grounded conversation that reflects the full range of community perspectives and produces something genuinely useful beyond the room.", "recording_license": "", "do_not_record": false, "persons": [{"code": "JUFWZE", "name": "Laura Gates", "avatar": "https://pretalx.evolutio.pt/media/avatars/JUFWZE_0JYzcqw.png", "biography": "Laura is a researcher and consultant at Bath Spa University, UK, with experience facilitating Open Space and participatory events across academic, charity and corporate settings. Her research into how presence, attention and perceived agency shape human interaction with non-human systems is published and recognised internationally. She is the founder and technical lead of Obwob, a feedback and impact PWA being piloting at this workshop, and advises on human-centred AI integration.", "public_name": "Laura Gates", "guid": "69b3f5ac-4673-590a-90ee-5345ff06f551", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/JUFWZE/"}, {"code": "Y8QPW8", "name": "Thibaud Colas", "avatar": "https://pretalx.evolutio.pt/media/avatars/Y8QPW8_seORmep.jpg", "biography": "Diving deep on AI in the Django ecosystem - [AI and developer experience](https://wagtail.org/blog/ai-and-developer-experience-wagtail-community-survey/), [design principles and ethos](https://wagtail.org/blog/ai-in-the-cms-steering-the-ecosystem/), [open source AI landscape](https://wagtail.org/blog/open-source-ai-we-use-to-work-on-wagtail/).\r\n\r\nI\u2019m a volunteer & contributor @ [Django Software Foundation](https://www.djangoproject.com/), core team & product lead for [Wagtail](https://wagtail.org/). Engineering @ [Torchbox](https://torchbox.com/). Accessibility, AI, climate action. Find me on: [Twitter](https://x.com/thibaud_colas), [Bluesky](https://bsky.app/profile/thibaudcolas.bsky.social), [Mastodon](https://fosstodon.org/@thibaudcolas), [LinkedIn](https://www.linkedin.com/in/thibaudcolas/), [GitHub](https://github.com/thibaudcolas), [thib.me](https://thib.me/).", "public_name": "Thibaud Colas", "guid": "a5df7247-4be1-5292-a0cf-20164adde181", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/Y8QPW8/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/S8GYY9/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/S8GYY9/", "attachments": []}]}}, {"index": 3, "date": "2026-04-17", "day_start": "2026-04-17T04:00:00+03:00", "day_end": "2026-04-18T03:59:00+03:00", "rooms": {"AMPHITHEATRE": [{"guid": "755e8f5a-b23b-58a4-acb7-531adb88a571", "code": "AS7ZTU", "id": 2009, "logo": null, "date": "2026-04-17T09:30:00+03:00", "start": "09:30", "duration": "00:55", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-2009-body-of-knowledge", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/AS7ZTU/", "title": "Body of knowledge", "subtitle": "", "track": null, "type": "Keynote", "language": "en", "abstract": "What really makes Django's documentation so good? What's significant about the idea of a handbook? And why does software need to pay attention to the body?", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "FDRCZ3", "name": "Daniele Procida", "avatar": "https://pretalx.evolutio.pt/media/Daniele_300x400.JPG", "biography": "I am a Director of Engineering at Canonical in Engineering Excellence. My work is concerned with engineering practice leadership and transformation.\r\n\r\nI enjoy helping organise community conferences for Python and Django. That includes multiple editions of DjangoCon Europe, as well as the first editions of PyCon Africa and DjangoCon Africa.  \r\n\r\nI also enjoy helping people and open-source projects improve their documentation.", "public_name": "Daniele Procida", "guid": "462ff4e3-40c1-5cab-8372-4fa62a6153fb", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/FDRCZ3/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/AS7ZTU/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/AS7ZTU/", "attachments": []}, {"guid": "8cb3b224-a39f-5ad8-abed-eee96d35cfcf", "code": "EGA3KM", "id": 1814, "logo": null, "date": "2026-04-17T10:30:00+03:00", "start": "10:30", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1814-zero-migration-encryption-building-drop-in-encrypted-field-in-django", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/EGA3KM/", "title": "Zero-Migration Encryption: Building Drop-in Encrypted Field in Django", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "We built a drop in replacement to many of the standard Django Fields to encrypt the data in our database columns with almost no overhead, and zero database migration.", "description": "Django doesn't come with a solution to encrypt database data out-of-the-box. While community projects exist, they often require complex migration processes or double-writing to new columns. At Sentry, for our high-traffic distributed system, we needed a solution that would abstract encryption logic without worrying about encryption keys on a case-by-case basis or performing risky migrations on millions of existing entries.\r\n\r\nWe built EncryptedFields, a custom Field base class that provides drop-in, no database migration, replacements for CharField, JSONField, and TextField. Our approach allows for a \"hybrid\" state: the field handles both old plain-text formats and the new encrypted format on-the-fly. This eliminated the need for complex data migrations or secondary columns, making the transition safe and seamless for our engineers.", "recording_license": "", "do_not_record": false, "persons": [{"code": "SYTSVG", "name": "Vjeran Grozdanic", "avatar": "https://pretalx.evolutio.pt/media/avatars/SYTSVG_pnzlSoy.jpeg", "biography": "I am a software engineer interested in scalable systems, cybersecurity, and software architecture. Currently working as a software engineer at Sentry, contributing to platform improvements, database optimizations, and our AI Agent observability products.  \r\n\r\nPreviously I have co-founded a cybersecurity SaaS company focused on real-time infrastructure monitoring.", "public_name": "Vjeran Grozdanic", "guid": "3b4111c0-4413-5adf-aeba-a0980131378d", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/SYTSVG/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/EGA3KM/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/EGA3KM/", "attachments": []}, {"guid": "1a99f8ea-c8a9-5b62-9273-bd4815266ae1", "code": "DHCJ9P", "id": 1882, "logo": null, "date": "2026-04-17T11:05:00+03:00", "start": "11:05", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1882-auto-prefetching-with-model-field-fetch-modes-in-django-6-1", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DHCJ9P/", "title": "Auto-prefetching with model field fetch modes in Django 6.1", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Configure your models to automatically prefetch related objects when needed with model field fetch modes, new in Django 6.1. This talk will cover usage, tradeoffs, and what distinguishes the \"fetch peers\" mode from prefetch_related() and select_related().", "description": "New in Django 6.1, model field fetch modes provide a way to avoid the deluge of queries from accessing un-fetched objects during a loop (also known as the \"N+1 queries\" problem). You may be familiar with how Django's prefetch_related() and select_related() methods can prevent these queries, but unlike those tools, the \"fetch peers\" mode does not require maintaining a list of fields to fetch. This can significantly improve project maintenance, especially when QuerySets are constructed at some distance from where they are used.\r\n\r\nIn this talk, we'll cover what's new about fetch modes, what tradeoffs are entailed, how to configure fetch modes per-model via managers, and how to use the \"raise\" mode to surface issues in development or put guardrails around performance-intensive sections of code (like the django-seal package).", "recording_license": "", "do_not_record": false, "persons": [{"code": "7QDHKK", "name": "Jacob Walls", "avatar": "https://pretalx.evolutio.pt/media/avatars/jtw2_ZQdmOLe.jpg", "biography": "Django has been an integral part of my journey as a developer from my training in music composition and technology through to building open-source web applications. Django contributor since 2020, Django Fellow since 2025.", "public_name": "Jacob Walls", "guid": "be46459a-19c9-516d-bd47-4b54a242c2c9", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/7QDHKK/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DHCJ9P/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/DHCJ9P/", "attachments": []}, {"guid": "b1bce1ab-b0ee-5f2f-8445-f392340cc9d2", "code": "U3ZMQV", "id": 1851, "logo": null, "date": "2026-04-17T12:05:00+03:00", "start": "12:05", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1851-improving-one-of-django-s-most-used-apis-and-it-s-not-the-one-you-re-thinking-of", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/U3ZMQV/", "title": "Improving One of Django's Most Used APIs \u2014 And It's Not the One You're Thinking Of", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "When we say \"API\", most people think REST or GraphQL. But Django has plenty of other APIs; one of the most common and confusing is manage.py runserver, especially when a beginner comes to deploy their first project. This talk explores Django's deployment story through the lens of API design, introduces django-prodserver as a path forward, and asks: what would it take to make going to production as obvious as starting development?", "description": "**The Setup: APIs Are Everywhere**\r\n\r\nWe'll start with a quick tour of what \"API\" really means\u2014not just REST, but Python imports, command-line interfaces, and the configuration files we use every day. Django's `settings.py` is arguably its most-used API: the interface through which we configure databases, middleware, installed apps, and everything else. And `manage.py` commands are APIs too\u2014contracts between Django and developers about how to run, migrate, and manage projects.\r\n\r\nThis reframing sets up the core question: if `runserver` is an API, what is it communicating? And is that message actually helpful?\r\n\r\n**The Problem: Django's Deployment Cliff**\r\n\r\nDeployment breaks down into three parts: setting up the environment, getting code there, and running processes. Django provides great documentation, but when it comes to actually running your app in production, you're on your own. Even the name `runserver` is misleading\u2014it doesn't say \"development.\" It just says \"run the server,\" and for a beginner, that sounds like the whole story. Many miss the jump entirely\u2014not realising a different approach is needed for production. And when they do, configuring Gunicorn, Uvicorn, or Celery workers is daunting\u2014and can feel like a betrayal of the \"batteries included\" promise.\r\n\r\nWe can add warnings and documentation, but that can add noise and not signal. The reception of adding the warning \"do not use in production\" to `runserver` has been mixed and if I'm honest it's a poor solution and quick fix to a larger problem. That's coming from me\u2014the one who proposed and implemented it! If the API design itself is confusing, no amount of documentation or warnings will fix that.\r\n\r\n**A Possible Solution: django-prodserver**\r\n\r\nI've built and published `django-prodserver`, a package that brings a production process configuration API into the familiar `manage.py` interface, configured through `settings.py`, where it belongs. A `PRODUCTION_PROCESSES` dictionary lets you name and define your processes, with backends for popular WSGI/ASGI servers and background workers. Swap backends by changing one line. The package also includes a `devserver` command\u2014mirroring the symmetry we might want in Django itself.\r\n\r\n**Live Demo**\r\n\r\nI'll take an existing project deployed on a Dokku VPS and show what changes when prodserver enters the picture. The goal is to make the \"aha\" moment tangible: this is what a cleaner deployment API could feel like.\r\n\r\n**The Bigger Picture: What Could Django Provide?**\r\n\r\nWe can't just change `runserver, Django's stability guarantees mean experimenting with core commands is risky. That's actually a good thing. But packages like django-prodserver give us a safe space to try ideas in the open. What naming makes sense? What hooks should Django expose for the ecosystem to build on? Could this eventually lead to production server support in core? I'll share some thoughts and invite the community to shape what comes next for prodserver and more broadly for designing new APIs through the experimental API feature that has been proposed.\r\n\r\n**Takeaways**\r\n\r\nAttendees will leave with:\r\n- A new way of thinking about Django's CLI and settings as API surfaces\r\n- Practical knowledge of django-prodserver they can use today\r\n- Ideas for how the community can shape Django's deployment future\r\n- Considerations for API design and how the experimental APIs proposal could open new paths for Django's development", "recording_license": "", "do_not_record": false, "persons": [{"code": "RBQPU8", "name": "Andrew Miller", "avatar": "https://pretalx.evolutio.pt/media/avatars/RBQPU8_EGtQmAx.jpg", "biography": "**Andy Miller** is CTO at Hamilton Rock and runs Software Crafts, a Django consultancy based in Cambridge, UK. He works with small businesses and startups on a fractional basis, helping them build and ship Django applications. Andy built `django-prodserver` to bring production process management into the familiar `manage.py` interface\u2014making deployment a little less daunting for everyone. He's an active contributor to Django and its community, and writes about Django, API design, and software development on his blog. This is his first full-length conference talk, following a lightning talk at DjangoCon EU 2025.\r\n\r\n\ud83d\udd17 [softwarecrafts.co.uk](https://softwarecrafts.co.uk) \u00b7 [GitHub](https://github.com/nanorepublica) \u00b7 [LinkedIn](https://linkedin.com/in/akmiller89) \u00b7 [Mastodon](https://indiehackers.social/@nanorepublica)", "public_name": "Andrew Miller", "guid": "1cd75c82-0041-5ca7-b3ae-2c48f8336995", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/RBQPU8/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/U3ZMQV/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/U3ZMQV/", "attachments": []}, {"guid": "4b176a92-fbb0-58e7-a338-fa2523fafc58", "code": "XBBRYC", "id": 1885, "logo": null, "date": "2026-04-17T12:40:00+03:00", "start": "12:40", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1885-where-did-it-all-begin", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/XBBRYC/", "title": "Where did it all `BEGIN;`?", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "We're all familiar with Django's `atomic` context for managing database transactions, but Django existed for several versions before it existed. How were transactions managed before 2013? How are transactions managed now? And how might they be managed in the future?", "description": "Until 2013, Django's `atomic` context manager didn't exist. This talk will explore how we had to manage database transactions -- as well as save-points, rollbacks, and commits -- before the ergonomics of `atomic` and what changed when it was introduced. By understanding what tools Django users had in Django 1.5 to make their code atomic, durable, or both, we can understand what problems `atomic` solved and how it made writing Django applications better.\r\n\r\nFast-forward to 2026 and we all take `atomic` for granted. But what problems might it have for modern development? We take a look at where `atomic` can cause confusion and suggest some ways to handle that in the future using `django-subatomic`.", "recording_license": "", "do_not_record": false, "persons": [{"code": "FZCKT9", "name": "Sam Searles-Bryant", "avatar": "https://pretalx.evolutio.pt/media/avatars/FZCKT9_e7iDWgF.jpeg", "biography": "Sam (he/him) is a staff software engineer at Kraken Tech. He used to work on billing and payments systems, but now spends most of his time working on project architecture, tooling, and developer enablement.", "public_name": "Sam Searles-Bryant", "guid": "a5f82e48-f74e-5f91-a3b7-5b44ceec835f", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/FZCKT9/"}, {"code": "KZTTYE", "name": "Charlie Denton", "avatar": "https://pretalx.evolutio.pt/media/avatars/KZTTYE_yVMAoSb.jpg", "biography": "Creator of https://ccbv.co.uk/, django-subatomic, django-schema-graph, django-sansdb, django-integrity. See https://meshy.co.uk/", "public_name": "Charlie Denton", "guid": "0d9e8b7a-1d7c-5071-8e81-6915de8610cd", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/KZTTYE/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/XBBRYC/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/XBBRYC/", "attachments": []}, {"guid": "70c634bd-eae1-5b7f-bc63-4e23bc745dd8", "code": "GX9KHL", "id": 1852, "logo": "https://pretalx.evolutio.pt/media/djangocon-europe-2026/submissions/GX9KHL/newathena_JPjHR6Y.jpg", "date": "2026-04-17T14:40:00+03:00", "start": "14:40", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1852-how-django-is-helping-to-build-the-biggest-x-ray-observatory-to-date", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/GX9KHL/", "title": "How Django is helping to build the biggest X-ray observatory to date", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Explore how Django is applied to ESA's NewAthena project, where significant amounts of data are managed in a scientific context, illustrating how a web framework can be extended to enable a large-scale space mission.", "description": "The European Space Agency (ESA) is leading the development of NewAthena (the New Advanced Telescope for High ENergy Astrophysics), an X-ray observatory designed to explore cosmic phenomena such as black holes, neutron stars, and galaxy clusters. The telescope utilizes a 12-meter focal length mirror assembly composed of 600 mirror modules. These modules are manufactured using Silicon Pore Optics (SPO), a technology that transforms silicon wafers into precision mirror plates. In total, the assembly involves approximately 2,400 mirror stacks and 100,000 individual plates.\r\n\r\nEach component must be tracked through a series of physical, mechanical, and chemical processes at various locations throughout Europe. At each step in this production chain, data is collected to assess the state and quality of the components. This includes logging components' status, recording geometric specifications and process parameters, and maintaining a complete history of the production chain.\r\n\r\nThis talk will explore how Django serves as the software backbone for managing this data. It presents how tracking systems for scientists and engineers are built using Django\u2019s standard core tooling, as well as additional packages where needed. In doing so, this talk demonstrates how a general-purpose web framework can be adapted to support a scientific and engineering environment within a space mission context.", "recording_license": "", "do_not_record": false, "persons": [{"code": "CVHGWK", "name": "Loes Crama", "avatar": "https://pretalx.evolutio.pt/media/avatars/CVHGWK_ziJlE3W.jpg", "biography": "Loes Crama is a software engineer contributing to ESA's NewAthena mission at cosine measurement systems in Sassenheim, The Netherlands. She studied Computer Science at the University of Applied Sciences in Leiden, The Netherlands, and graduated in 2021. In her current role, she develops data management systems supporting scientific and engineering operations in large research projects. Alongside software development, she works with scientific data across multiple systems, combining software engineering with data engineering and data science tasks as part of her day-to-day work.", "public_name": "Loes Crama", "guid": "b422d92e-1af5-5908-bb62-0f99a3206c13", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/CVHGWK/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/GX9KHL/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/GX9KHL/", "attachments": []}, {"guid": "eec8e82d-d720-597d-93cd-da987e8badcf", "code": "7A87Q7", "id": 1736, "logo": null, "date": "2026-04-17T15:15:00+03:00", "start": "15:15", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1736-django-templates-on-the-frontend", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/7A87Q7/", "title": "Django templates on the frontend?", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Django Template Transpiler is a project to transpile Django templates into Javascript render functions, much like what Handlebars can do. It is intended to solve use-cases where small parts of your UI needs to be rendered both on the backend (because corresponding data already exists) or on the front-end (in result of user interaction) and issuing HTTP queries to perform SSR is inconvenient because of bad internet access.", "description": "In recent years, the Python community has widely adopted HTMX and Hotwire's Turbo. The paradigm of these frameworks is to use AJAX requests to handle changes in the web page. However, there are situations where each HTTP request has a cost, either in bandwidth, volume quota, or any other form of resource cost. In such situations, your application cannot afford to make an HTTP request every time a subform is added to a Django Formset, for instance.\r\n\r\nAfter encountering this situation several times, I decided to start working on django-template-transpiler, a tool written in Rust that converts Django templates into a JS function that renders the DTL on client side, similar to what Handlebars can do. The rationale to allow the developers to make your page dynamic, whil minimizing the number of HTTP queries and render both on server-side and client-side using your Django templates as a single source of truth.", "recording_license": "", "do_not_record": false, "persons": [{"code": "FC3WLA", "name": "Christophe Henry", "avatar": "https://pretalx.evolutio.pt/media/avatars/FC3WLA_8IPLx0S.jpg", "biography": "I am a senior developer struggling with ADHD always keen on learning new things and working to make other people's lives simpler. I currently work as a Python/Django independent contractor for the French governement. In the past I also occupied other positions such as Java, web, full-stack developer, devops, and even sys admin for a while. I aslo contribute to a lot of things as I can't seem to be able to focus on one.\r\n\r\nhttps://github.com/christophehenry\r\nhttps://blog.christophe-henry.dev/", "public_name": "Christophe Henry", "guid": "fea3a064-efe3-52aa-bec8-563e7b0fdb14", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/FC3WLA/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/7A87Q7/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/7A87Q7/", "attachments": []}, {"guid": "ae15e25e-0568-5ac8-8a80-32624a3febb6", "code": "3VP3W7", "id": 1806, "logo": null, "date": "2026-04-17T16:15:00+03:00", "start": "16:15", "duration": "00:30", "room": "AMPHITHEATRE", "slug": "djangocon-europe-2026-1806-what-s-in-your-dependencies-supply-chain-attacks-on-python-projects", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3VP3W7/", "title": "What's in your dependencies? Supply chain attacks on Python projects", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Every pip install is an act of trust. Attackers have exploited that trust - phishing maintainers, hijacking CI/CD pipelines, turning popular packages into malware. Learn how these attacks work and practical defenses for your projects.", "description": "Your Django project doesn't just depend on Django - it depends on dozens, sometimes hundreds, of packages. Each one is code that runs with your privileges. What happens when one of them gets compromised?\r\n\r\nThis isn't theoretical. Attackers have phished maintainers to publish malicious versions of trusted packages. They've exploited CI/CD pipelines to inject crypto miners into popular libraries. They've registered typosquatted package names and waited for developers to mistype.\r\n\r\nThis talk examines how these attacks work and what you can do about them.\r\n\r\nWe'll look at real incidents to understand the attack patterns - how attackers get in, what payloads they deploy, and how compromises get detected. And we'll build a practical defense toolkit: scanning for known vulnerabilities, evaluating new dependencies before installing them, and hardening your workflow against supply chain attacks.\r\n\r\nThe talk is aimed at Django developers who want to understand the threat landscape and leave with concrete steps they can implement immediately. No security background required - just familiarity with pip and the general shape of a Django project.", "recording_license": "", "do_not_record": false, "persons": [{"code": "FLBRLU", "name": "Mateusz Be\u0142czowski", "avatar": "https://pretalx.evolutio.pt/media/avatars/FLBRLU_xdL3vIB.jpg", "biography": "I'm a Python developer with over 10 years of experience building web applications and APIs. I co-organize PyGDA, a local Python meetup in Poland, and have experience as a Python trainer. In recent years, I've developed a growing interest in web application security and DevSecOps. When I'm not coding, you'll find me playing table tennis or chess.", "public_name": "Mateusz Be\u0142czowski", "guid": "cf37dcb6-1170-582d-968f-936ffddf2cb6", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/FLBRLU/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3VP3W7/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/3VP3W7/", "attachments": []}], "NEW STAGE": [{"guid": "8a2a3d34-28a6-56f0-b6b7-b5adf5ea1b3a", "code": "EGHWNC", "id": 1872, "logo": null, "date": "2026-04-17T11:05:00+03:00", "start": "11:05", "duration": "00:50", "room": "NEW STAGE", "slug": "djangocon-europe-2026-1872-improve-your-cv-with-help-of-your-django-friends", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/EGHWNC/", "title": "Improve your CV with help of your Django friends", "subtitle": "", "track": null, "type": "Workshop", "language": "en", "abstract": "CVs are marketing documents that have the primary goal to help Software Engineers get to a job interview. In this workshop we'll look at some general best practices, and provide feedback to each others CVs to increase our chances to land a new role.", "description": "When searching for a new job a Software Engineer is often reduced to a 2-page PDF document - CV - that they need to submitted to be even considered for a job interview. With this in mind we need to treat it as marketing document, that benefits from going through a few stages of reviews from our peers in the field.\r\n\r\nWe'll start the workshop with some basic guidelines of how to read CVs with the idea that CV can be adjusted for specific job role (e.g. Backend Engineer with FinTech experience). We'll then split into groups and try to read each others' CVs (and possibly LinkedIn descriptions) to help provide feedback on how to better refine them for the next career step.\r\n\r\nPre-requisites needed: current CV in English language that participant can share (e.g. uploaded somewhere online); computer or similar device to view participants CVs.", "recording_license": "", "do_not_record": false, "persons": [{"code": "WBZZTD", "name": "Jure Cuhalev", "avatar": "https://pretalx.evolutio.pt/media/avatars/WBZZTD_U2wVbm4.jpg", "biography": "Seasoned Software Engineer that is currently leading a team in the Energy industry. Passionate about community building and increasing opportunities in IT for everyone.", "public_name": "Jure Cuhalev", "guid": "c65423f2-cbad-5618-acd1-d2925b042dc0", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/WBZZTD/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/EGHWNC/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/EGHWNC/", "attachments": []}, {"guid": "38fb5c02-d55c-5f47-899a-ea5eb2fd2aa7", "code": "83B97E", "id": 1862, "logo": null, "date": "2026-04-17T15:15:00+03:00", "start": "15:15", "duration": "01:30", "room": "NEW STAGE", "slug": "djangocon-europe-2026-1862-django-admin-deux-from-first-steps-to-custom-plugins", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/83B97E/", "title": "Django-Admin-Deux: From First Steps to Custom Plugins", "subtitle": "", "track": null, "type": "Long Workshop", "language": "en", "abstract": "Django's built-in admin is powerful, but it's essentially a separate framework within Django and it's 20 years old.\r\n\r\nWouldn't it be nice to be able to work with an admin interface that works like the rest of Django, built on generic views, plugins, and view factories? This is the idea behind [Django-Admin-Deux](https://codeberg.org/emmaDelescolle/django-admin-deux): a proof-of-concept Django admin replacement where CRUD operations are just actions, knowledge transfers both ways, and everything feels like Django.\r\n\r\nThis workshop will explore the concepts behind Django-Admin-Deux in details and we will build together:\r\n- an application that uses it\r\n- a custom plugin", "description": "What if customizing Django's admin felt like writing any other Django view? Django-Admin-Deux aims at doing just that. It is not just a cosmetic refresh, it's a radically new approach relying on factory-generated views with a plugin-first design. Let's have a closer look!\r\n\r\nWorkshop Structure:\r\n\r\n1. Architectural Foundations (20 min)\r\n     - View Factories: How Django-Admin-Deux generates views dynamically\r\n     - Action System: Actions are the recipes followed by view factories, including non-model-related ones like dashboards\r\n     - Plugin Hooks: what hooks are available?\r\n     - Dataclasses: Django-Admin-Deux uses a series of dataclasses to make extending it type-safe and practical, let's look at them\r\n2. A practical example: using Django-Admin-Deux (30 min)\r\n     - Simple (migration from the stock admin)\r\n     - Enhancements (`list_display` with enhanced features, Form `Layout`, `Collection`s)\r\n     - Adding custom `View`s and `Action`s\r\n     - Permission system (from stock admin compatibility to composable permissions)\r\n     - Visibility, debugging and testing\r\n3. A more advanced example: let's build a plugin (30 min)\r\n     - Structure of a plugin\r\n     - Minimum requirements\r\n     - Enhancing existing `View`s and `Action`s\r\n     - Announcing and checking feature availability\r\n\r\nPrerequisites:\r\n- Familiarity with Django and the admin in general\r\n- Starter repository will be provided before the workshop", "recording_license": "", "do_not_record": false, "persons": [{"code": "XREAEA", "name": "Emma Delescolle", "avatar": "https://pretalx.evolutio.pt/media/avatars/profile_pRwiH7a.jpg", "biography": "Long-time pythonista, PSF & DSF member, Django fan, electronics enthusiast, author of django-admin-deux and other OSS libraries\r\n\r\nI am from Belgium and have been involved in open-source at different levels for about 20 years. I am a member of the Django Steering Council for the 6.x cycle.\r\n\r\nOne of the things I enjoy the most is sharing knowledge with others. And this is why I enjoy writing tutorials as well as giving talks and workshops.", "public_name": "Emma Delescolle", "guid": "67c5d47f-59b8-5e67-843f-896eca790506", "url": "https://pretalx.evolutio.pt/djangocon-europe-2026/speaker/XREAEA/"}], "links": [], "feedback_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/83B97E/feedback/", "origin_url": "https://pretalx.evolutio.pt/djangocon-europe-2026/talk/83B97E/", "attachments": []}]}}, {"index": 4, "date": "2026-04-18", "day_start": "2026-04-18T04:00:00+03:00", "day_end": "2026-04-19T03:59:00+03:00", "rooms": {}}, {"index": 5, "date": "2026-04-19", "day_start": "2026-04-19T04:00:00+03:00", "day_end": "2026-04-20T03:59:00+03:00", "rooms": {}}]}}}