DjangoCon US 2023
Ref: https://xkcd.com/2054/
As data-driven organizations grow, life gets... complicated
- data pipelines requirements grow
- more data sources and sinks are added to the mix
- tasks become dependent on each other in complicated ways
- service agreements need to be adhered to and monitored
- schedules need to be maintained...
Apache Airflow, initially developed and open-sourced by those nice folks at Airbnb, solves these problems and more.
In this tutorial session, we'll be starting off by getting to grips with Airflow as a stand-alone tool, and then we'll see how we can get it to play nice with Django.
Test Driven Development (TDD) has become a widely used methodology in software development to ensure code quality and minimize bugs. In this workshop, you will learn the fundamentals of TDD and its benefits, along with practical tools like factory_boy and faker for pre-populating data factories in tests. You will also learn how to write tests for Django REST endpoints, mock 3rd party services, and parameterize tests for different user types and roles. By the end of this workshop, you will have a solid understanding of TDD and the skills to implement it in your Django projects. Whether you are a beginner or an experienced developer, this workshop will provide valuable insights and techniques for mastering TDD in Django.
Seamless Postgres Query Optimization is a methodology that allows every backend engineer, even without deep database knowledge and 10-year Postgres experience, to move step-by-step to find and eliminate the worst bottlenecks in any SQL.
Fully static sites have clear benefits – and limitations. Rather than going fully static, let’s use Next.js in combination with a Django/Wagtail API backend, so we make the most of both platforms.
We'll look at creating a Python and Django specific developer environment in VS Code including all the extensions, settings, and new features that will make developing your Python project simpler. This workshop is tailored to your needs for you to take home to your development teams.
Escape from the dark, complex web of modern application development, and return to the green pastures where Django began - where web application development was simple, fast, and fun. Hotwire allows us to keep using Django's amazing toolkit and all the productivity benefits that come with it, while obtaining the results people expect from a modern website.
This tutorial will introduce you to Hotwire and radically change how you thought modern web development had to be.
Every week, in every city, hundreds if not thousands of decisions, big and small, are being made about the places where we all live. Most of the time, these decisions are hidden behind old systems, arcane websites, or poorly formatted PDFs. With the power of Datasette, Python data tooling, and Github actions, you can quickly set up a low-or-no-cost city data pipeline, and help us all better understand the decisions being made where we live.
You may think the Django ORM is big and scary, but at the end of the day, it's just Python. Join me as I talk about my experiencing fixing an ORM bug with help from the community
Many Python developers who build web applications rely on JavaScript-heavy Single-Page Applications (SPAs) to achieve dynamic user experiences. However, these SPAs have challenges, including increased complexity, slower load times, and complicated build pipelines. But an alternative approach exists that delivers an exceptional user experience without the drawbacks of SPAs!
This talk will explore how you can leverage the power of HTMX, AlpineJS, and Django's ability to stream HTML to create web applications with a significantly improved user experience. We will delve into the principles and techniques that make this approach a compelling alternative to SPAs.
This talk is a love letter to meetups. We'll cover how meet-ups fit into our larger ecosystems, what we could work on collectively to support each other, and maybe even make a plan for saving the world -- one meet-up at a time.
Django and Vue both have unique front-end strengths. Django’s context-driven template views offer rapid development of pages directly from back-end model content. Vue’s modern reactive components provide powerful tools for building complex UIs within the rich Javascript ecosystem.
Do we have to choose one or the other, or is there a way to combine both front-end frameworks in a single project without compromising their strengths?
This talk will demonstrate step-by-step how to intermingle Vue SFCs within Django Templates, such that targeted areas can be enriched with Vue while retaining the flexibility and convenience of Django Templates in the remainder.
A survival guide for developers who may occasionally be called upon to perform the duties of a PostgreSQL DBA
BeeWare is a framework that let users of all skill levels develop applications with native user interfaces. It is very powerful to extend the already existing Django application to multiple devices. In this talk, we will demo building a simple Beeware app with a Django backend.
Tracking model history is an essential aspect of many problems encountered in web applications, from simple audit trails to preserving values of fields during state transitions. There are a wide array of approaches to do this with Django apps, almost all of which are subject to performance penalties, require unstructured JSON fields to track history, or can easily be bypassed accidentally in application code.
In this talk, we show a new way to to track history in Django with database triggers. We specifically focus on Postgres databases using the django-pghistory app. We discuss the benefits of using database triggers for history in the context of simplicity, performance, and reliability. We also discuss the benefits of using structured history tables and how this can allow engineers to solve complex history-related modeling problems.
Attendees of this talk will be exposed to a totally new way to think about history tracking in their application, along with an understanding of the pros and cons of using database triggers to track history in practice.
Dig a bit into the inner workings of migrations, and learn a bit about more advanced uses for them
This talk explores the potential of Django custom model managers and querysets, guiding beginners through their utilization for more efficient and maintainable development, showcasing practical patterns along the way.
Passkeys is a state-of-the-art technology that extends Web Authentication API allowing the user to use a key stored on a device to log in on a new device. The technology is supported by Apple, Google, and Microsoft and is available now on recent iOS/iPad, Andriod as well as Mac OS X Ventura.
Passkeys allow the users to log in only through their private keys. It doesn't require the entry of a username and/or password, which provides a faster as well as safer environment for the users.
Google released Passkeys for all users to log in with on May 3, 2023.
The talk will discuss what is Passkeys and how it is more secure and phishing resistant, also it will show how to integrate them in your current Django project in a few lines of code.
In today's world, APIs have become the backbone of many modern applications. Django, one of the most popular web frameworks, along with Django Rest Framework, provides a powerful and flexible platform for building APIs. And when it comes to API documentation, OpenAPI has emerged as the industry standard.
In this session, we will dive deep into API development with Django, Django Rest Framework, and OpenAPI. We will explore the capabilities of these tools and learn how to build robust and scalable APIs. We will cover topics such as API design principles, request handling, response formatting, authentication, and versioning. We will also discuss best practices for documenting APIs using OpenAPI.
By the end of this session, you will have a solid understanding of API development with Django and Django Rest Framework, and be able to create high-quality APIs that meet the needs of your users. You will also have the skills to document your APIs using OpenAPI, ensuring that your documentation is always up-to-date and accurate. So join us and learn how to build powerful APIs that can transform the way you and your users interact with your application.
Production server infrastructure is a complicated beast that requires configuring and coordinating dozens of tools and services. You have a new Django application and you're ready to deploy it; what next? You have an existing Django application and you set up the servers yourself; what can you do better?
I’m the co-founder CTO of Zagaran, Inc., a software consulting company. Over the past 10 years, we’ve built, maintained, and deployed dozens of Django websites, and have an extensive playbook for how to do that well. In this talk, we'll draw from that playbook and go through the main issues for a creating a robust and secure Django deployment. For each issue, we'll look at the technologies and techniques to solve it. We'll focus on AWS as a hosting platform, but the techniques at play will work on any major cloud provider. This talk will cover the following:
* Application hosting
* Resilience to server failures
* Automating deployment
* Secrets management
* File storage
* Error monitoring
* Server maintenance
* (and more!)
Hi from Brazil! 👋🏾🇧🇷
Join us for a unique journey from Brazil to the world of Python and Django. AfroPython, initially inspired by community events, has transformed into a social good company. In this talk, we'll explore the evolution of AfroPython and the impact of Python and Django on our journey. We'll discuss how these technologies have enabled us to achieve our mission and create social change. Come and be inspired by our story!
In this talk, we will explore how to work with Neo4j using Python to build scalable and efficient web applications. When we think of databases, the first thing that comes to mind are relational databases like MySQL or PostgreSQL, but there are other types of databases, such as non-relational databases, which are very useful and efficient for various problems. An example of one of these non-relational databases is a graph database, such as Neo4j
We will learn how graph databases work, the syntax of Neo4j, how to transform a relational model into a non-relational one with simple steps, and examples of queries using Cypher. We will also take a look at use case scenario using the Django neomodel library. a basic API using Django with the interface neomodel to connect with Neo4j By the end of the talk, attendees will have a basic understanding of how to leverage these technologies to build fast and scalable web applications.
Learn how to benefit from powerful content-management features (such as: saving revisions, managing live/draft versions, moderating content, and more) for your Django models by integrating Wagtail CMS into your project.
What started as a Website to show the schedule of a free radio, has resurfaced as the back-end of a radio automation software suite that provides the schedule through a REST API.
As the most popular and mature solution for asynchronous task queues in Python’s ecosystem, Celery is an essential tool for Django projects. But running Celery tasks with high reliability is a challenge. The settings are tricky, tasks can be lost in multiple ways, task code has opaque limitations, proper monitoring isn’t trivial, and more. In this talk, we’ll share what we learned to be necessary for running Celery reliably after years of running it in production.
GraphQL has gained popularity for its ability to offer more flexibility and performance over traditional REST APIs. Strawberry is a new and fast-growing GraphQL library for Python, inspired by dataclasses functionality, that offers a modern and intuitive API for building GraphQL APIs using type hints.
In this talk, we will explore the basics of building a GraphQL API with Strawberry and how it can be integrated with Django in a performant and type-safe way, by generating its types and resolvers directly from Django models. We will also compare and contrast the benefits and drawbacks of GraphQL versus REST APIs, including how GraphQL can help improve frontend development workflows.
Attendees will come away with an understanding of how Strawberry can help simplify the process of building and maintaining GraphQL APIs, and how to use its powerful features to optimize for performance, safety, and flexibility, while also covering its drawbacks and how to avoid some common issues.
At some point, every application is limited by the database. You don’t have to be a Postgres expert to get started with a few key performance improvements. This gentle introduction is meant for folks who’ve never ventured into their database before, or those who have been turning knobs blindly. I’ll present how Postgres uses memory. Then, I’ll connect that to how you can monitor, tune, and optimize queries. You’ll be ready to take on the challenge as your application grows.
Have you ever encountered a codebase where modifying code seemed impossible due to the constraints of the test suite? Are the tests that you write today inadvertently restricting future improvements? In this talk, we will uncover how placing empathy at the forefront of test suite development can empower rather than hinder future developers, including your future self.
A case study of a single-application ETL system to scrape and enrich complex nested data and then expose it via GraphQL and Discord. It will dive into how to use these various async-based libraries together in a small footprint app.
Are you grappling with a project morphing into a 'Big Ball of Mud'? Are you conversant with Domain-Driven Design (DDD) but unsure about its application to Django projects? This talk will navigate you through three levels of implementing DDD in Django projects right from the ground up. Expect to walk away with the knowledge of transforming your Django project by employing DDD techniques at various levels based on your project's needs and constraints.
Companies with vast data and complex processes must streamline their operations to ensure precision, scalability, and sustainability. In this talk about transitioning from Excel to Django, attendees will discover Django’s superpowers that enabled a national installer of battery energy storage solutions to optimize energy storage configurations, enhance accuracy, ensure reliability and improve quality assurance. Attendees will learn best practices and gain valuable insights for streamlining data-intensive processes and shaping a greener future.
Learn about GitHub Actions, a CI/CD platform for automating build, test, and deployment pipelines. This presentation provides an overview of key terms and concepts, as well as a step-by-step guide to creating reusable components known as "Actions". Perfect for developers new to automation or those looking to transition to GitHub Actions.
Are we really building products that serve everyone, or just a selected few?
As developers, we have responsibility to ensure that our products serve everyone, regardless of their background or identity. However, our unconscious bias often creeps into even the most well-intentioned projects and impacts the way we develop products or engage with communities, leading to unintentional exclusions.
When I first designed a Speech-Text-Analytic app, my focus was to simplify business communication with transcribed audio and valuable insights. However, feedback from the community highlighted it had limitations for diverse users, including those with disabilities who faced inaccurate captions for audio content.
This wake-up call prompted me to improve accessibility and user-friendliness for marginalized groups. And for the same reason, I'm making proactive steps to cater for the marginalized by integrating a feature that recognizes Nigerian native languages.
As tech creators, we have the power to create change, but good intentions alone are not enough. This talk will offer strategies to address unconscious bias in product and community building, while avoiding common pitfalls. Attendees will learn to understand diverse needs & experiences for more inclusive environments.
Django is a popular web framework that comes with a powerful database migration system. However, managing database schema changes can be a challenging task, especially in complex projects with multiple developers and frequent releases. Conflicts can arise when multiple developers modify the same models or when migration files are applied in the wrong order. Rollbacks are also necessary when migrations fail or need to be reverted.
We will explore different strategies for handling conflicts and rollbacks in Django database migrations, discuss how to prevent conflicts by using tools such as database locking, how to resolve conflicts manually and how to use migration squashing to reduce the number of migration files. Additionally, we will explain how to handle rollbacks by using version control systems and backups.
By attending this talk, attendees will gain a deeper understanding of the challenges involved in managing database migrations in Django and learn practical strategies for handling conflicts and rollbacks. They will be able to apply these strategies in their own projects to improve their development workflow and ensure data integrity.
Interested in trying out OSS contributing, and can't find a project you're comfortable in? Maybe you found an issue but the scope is too big to start?
There are other ways to get into OSS! In this chat, we'll cover non-code contributions, the different types there is, and how to get started in a way that works for you.
The djangoproject.com website is the showcase of the Django project and is the result of contributions from many people. In this talk, we'll update you on its development and learn how to contribute to it.
Have you ever felt that unit tests just weren’t enough? It just feels like there’s always something wrong when your customers start to use your application. All your unit tests pass, so where does the problem stem from? It turns out we need to start thinking like users, not developers .
In this talk, you'll get a look at the the behave
library to explore executable specifications and behavior driven development. You'll learn effective practices around specification testing and how to integrate that into your workflow. You'll also learn how to drive automated testing of a Django App through the web browser, via the selenium library.
Explore options for building Django-based content-managed websites that editors will love. Learn about the features and patterns necessary for content editing and how they are supported in Django-land. Gain the knowledge to select the best Django-driven CMS for their next project.
As creators of software, we're repeatedly told that we're not merely imagining the future of the world, but bringing it into being. Let's suppose that's true. What, exactly, are we imagining?
Multitenancy is a broad spectrum, ranging from using separate databases for each tenant to using a shared database and schema. This talk will present a “lightweight” multitenancy use case that we’ve run into across different projects in various contexts. We will present a simple custom solution using Django Rest Framework and explain why it worked for our needs. We will also go over which cases could use a similar approach (and which could not), as well as a different approach using an existing library.
Beginners often stumble when it’s finally time to get their Django app online. Instead of another deployment recipe, this talk seeks to explain the fundamental concepts of deploying a Django app and equip developers to think through the process for themselves when they’re ready to make the transition from their code editor to the web.
Django migrations are a great tool, but after years of changes in a project they can become very numerous, slowing down tests.
Is it possible to optimize them?
Data visualization is an essential component of data science, and web-based data visualization is becoming increasingly popular. In this talk, we will explore how to integrate Django, a popular Python web framework, with two of the most popular data visualization libraries, D3.js and Bokeh, to create interactive and dynamic visualizations for your data science projects.
Wagtail is one of the most popular content management systems in the Django world, and the Wagtail team is committed to making it as easy as possible to create accessible websites. It still requires intention and effort on the part of a developer creating a Wagtail website, though. Learn the tools and techniques you need to set your editors up for success.
By an order of magnitude, Celery remains one of the most popular Django-adjacent packages for Python. In this talk, I'll explore what continues to make Celery a go-to solution for background and scheduled jobs with Django, how to integrate Celery with a Django project, and some common patterns to use (and avoid!) when writing tasks with Celery.
Proxy models are part of Django’s inheritance styles, but how to they work, how are they different from other inheritance styles that Django provide, practically where can they be applied in real world scenarios. Using simple code snippets and practical examples lets explore proxy models.
Django is leading the charge when it comes to hypermedia adoption in the Python space. Let's take a look at patterns, tools, and projects that leverage htmx, examining where we are and where we are going in this ecosystem.
Ever wonder how accessible Django is? Sites built with Django, the admin, the docs. Let’s find out! We will leverage the HTTP Archive’s websites technology dataset to quantitatively review common accessibility issues on Django projects – and then we’ll dive into Django’s implementation choices to understand the results.