Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Episode 12 - Success With Static Files
On this episode, our focus will be on static files. Static files are vital to your application, but they have little to do with Python code. We’ll see what they are and what they do. Listen at djangoriffs.com or with the player below. Last Episode On the last episode, we looked at Django middleware. We discussed why middleware is useful and how you can work with it. What Are Static Files? -
Interview Question Series Wrap Up
A summary and wrap-up of my Unpacking Interview Questions series, covering why I wrote this series in the first place, some advice on developing your own questions, and answers to a few questions. -
Django News - All About That Database - Feb 12th 2021
News Wagtail 2.12 released Changes include official Python 3.9 support, a new 'choose' permission, in-place StreamField updating (sounds niche but enables some cool features), admin colour themes, and performance improvements. wagtail.io PEP 634 -- Structural Pattern Matching: Specification Python is getting pattern matching in a future version which is similar to a switch statement in other languages. python.org Events ‘What’s New in Wagtail’, episode 3 The Wagtail team is hosting a free webinar to help get everyone up to speed on ‘What’s New in Wagtail’. Check out What's New in Wagtail (season 1, episode 2) too. wagtail.io Articles The Unexpected Find That Freed 20GB of Unused Index Space by Haki Benita How to free space without dropping indexes or deleting data. hakibenita.com Cleaning Up Your Postgres Database How do you know if your Postgres database is healthy? Craig Kerstiens shows us a few tips. crunchydata.com Database Constraints in Django Django's database constraints have evolved a lot since the Django 2.2 release, and Steven Pate walks through the various constraint options. laac.dev Elegant Database Migrations on ECS While this article is a few years old, Adam Stepinski shows us how to write a health check which checks Django's Migrations before signaling … -
The Weakness Question
The fifth and final part of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today’s question is the most difficult-to-ask of the series, but also one of the most valuable: asking a candidate to discuss one of their weaknesses. -
“Tell Me About a Disagreement…”
Part 4 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today, an oldie-but-goodie: looking into a candidate’s ability to disagree and resolve conflict professionally. -
New Testing Features in Django 3.2
Django 3.2 had its first alpha release a couple of weeks ago and the final release will be out in April. It contains a mezcla of new features, which you can check out in the release notes. This post focuses on the changes to testing, a few of which you can get on earlier Django versions with backport packages. 1. setUpTestData() isolation The release note for this reads: “Objects assigned to class attributes in TestCase.setUpTestData() are now isolated for each test method.” setUpTestData() is a very useful hook for making your tests fast, and this change makes its use a lot easier. It’s common to use the TestCase.setUp() hook from unittest to create model instances that each test uses: from django.test import TestCase from example.core.models import Book class ExampleTests(TestCase): def setUp(cls): self.book = Book.objects.create(title="Meditations") The test runner calls setUp() before each test. This gives simple isolation, since the data is fresh for each test. The downside of this approach is that setUp() runs many times, which can get quite slow with large amounts of data or tests. setUpTestData() allows you to create the data at the class-level, so only once per TestCase. Its use is very similar to setUp(), only … -
Diversity, Equity, and Inclusion
Part 3 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today: making sure candidates align with organizational values of diversity, equity, and inclusion. -
Sessions in Flask
This article looks at how sessions work in Flask. -
“Tell Me About a Project You Led…”
Part 2 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today: measuring a manager’s ability to lead projects and manage them effectively. -
“Explain a Topic At Multiple Levels…”
Part 1 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today: asking candidates to explain a topic at multiple levels. This is one of my favorite questions to ask for engineering roles; strong performance on this question correlates very highly with high job performance on my teams. -
How To Use Htmx In Django
This article show you how to use htmx in Django. What is htmx? According to the htmx website: htmx allows you to access AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypertext. The example that we’ll craft is an ability to delete a task from a list of tasks without reloading the whole page. -
New Committers for Tastypie & Haystack
New Committers for Tastypie & Haystack -
Django Dash - Registration Soon! (And Sponsors Needed)
Django Dash - Registration Soon! (And Sponsors Needed) -
The State of Tastypie
The State of Tastypie -
Django Dash & WSGI Wrestle Cancelled
Django Dash & WSGI Wrestle Cancelled -
Haystack & Tastypie Orgs
Haystack & Tastypie Orgs -
How to Deploy Django Channels 2.x on AWS Elastic Beanstalk (Amazon Linux 2)
Deploying Django Channels on Elastic Beanstalk is certainly a very arduous task. While there are certain resources available (in particular this medium post), they are still outdated and don't work directly on Amazon Linux 2. In this article, I'll w... -
Django News - Django 3.1.6 released - Feb 5th 2021
News Django security releases issued: 3.1.6, 3.0.12, and 2.2.18 These releases address a "low" severity issue but it is still highly recommended to upgrade your Django version as soon as possible. djangoproject.com You can now register for PyCon US 2021! PyCon US tickets are affordably priced for all levels from students to corporate ticket holders and financial aid is available. They have a special patron level for anyone who wants to see if their bosses are paying attention to their expense reports. blogspot.com Pip has dropped support for Python 2 The latest release (21.0.1) no longer supports Python 2. pypa.io Articles How to Limit Test Time in Django’s Test Framework Adam Johnson shows us how to implement a test time limit that automatically fails any long-running tests. adamj.eu Speed up pip downloads in Docker with BuildKit’s new caching Itamar Turner-Trauring shows us how to use Docker BuildKit's new caching to speed up pip install times. pythonspeed.com Docker, Django, Traefik , and IntercoolerJS as a SaaS Stack in 2021 A detailed look at one SaaS companies Django-based stack. simplecto.com Homebrew Python Is Not For You Justin Mayer makes a case for not depending on Homebrew Python. justinmayer.com Sponsored Link Build a … -
UX Polish - Building SaaS #90
In this episode, I worked on more customer requests to refine the user interface. We added a new convenient shortcut button and included additional information and links on the course detail view. I’m continuing on my path to include the changes that my customer wants as she running a school year for the first time. The first change was to add a new button on the student’s view of a course. -
Using Django Check Constraints to Limit A Model to a Single Instance
Yet another use case for creating a database constraint with Django’s CheckConstraint class. Sometimes it’s useful to have a model with only have one instance in the database, sometimes known as a singleton. This is useful for storing a small amount of structured data that we want to share between all our project’s processes. For example, imagine a remote API that we authenticate with using a temporary access token. We have the username and password for the API in our Django settings, and use those to get a temporary access token. We then need to store that temporary access token for all operations with that API, and refresh it when it nears its expiry time. And for security reasons, we are only allowed to store the current access token. We can store the token and its expiry in a model like this: from django.db import models class RemoteAPIAccount(models.Model): access_token = models.CharField(max_length=120) access_token_expires = models.DateTimeField() This model has the right fields for holding the token, but it can also have many instances of it in our database. We can write code that always uses a single instance by always the model through get_or_create() or update_or_create(), and passing all field values through … -
Wagtail, React, & Gatsby - Dawn Wages
Dawn’s personal siteDawn on Twitter @DawnWagesSaysWagtail Documentation SprintAt the Root: Wagtail + Gatsby + GitPod - PyConline AU 2020 talkWagtail CMSDecolonizing Technology on Martin Luther King Day 2021Biometric Insecurity - Carina C. Zona @PyConline AU 2020Support the ShowThis podcast is a labor of love and does not have any ads or sponsors. To support the show, please consider recommending a book from LearnDjango.com, signing up for the free weekly Django News newsletter, or learning more about Button a simpler deployment story for Django. -
Working with Django ImageField
<![CDATA[ Working with Django ImageField Django ImageField is great solution to associate images with your models. It is also a field that I most often have some issues with (because saving images is a bit more complicated than say text or a number). For this reason I decided to write this post as a future reference to myself and hopefully it will help someone else too. To even work with the ImageField you need the Pillow package. pip install Pillow When specifying the field definition, there is an option to select the directory where the images will be stored. For example: header_image = models.ImageField(upload_to='blog-images/') This is a relative path inside the media directory. Make sure you have the MEDIA_ROOT configured in your settings file. Saving images to ImageField There are numerous ways of saving actual image inside this field. The easier option is to use ModelForm, which you can just save (assuming it is valid) in your view and done. However, you need to include the request.FILES while creating the form like this: form = NewImageForm(request.POST, request.FILES) And for a brief visit to the HTML, the <form> needs special definition too in a form of the enctype attribute. <form method="post" … -
Django and Pydantic
This article looks at how to integrate Pydantic with a Django application. -
The Unexpected Find That Freed 20GB of Unused Index Space
Every few months we get an alert from our database monitoring to warn us that we are about to run out of space. Usually we just provision more storage and forget about it, but this time we were under quarantine, and the system in question was under less load than usual. We thought this is a good opportunity to do some cleanups that would otherwise be much more challenging. To start from the end, we ended up freeing more than 70GB of un-optimized and un-utilized space without dropping a single index or deleting any data! Using conventional technics such as rebuilding indexes and tables we cleared up a lot of space, but then one surprising find helped us clear an additional ~20GB of unused indexed values! This is what the free storage chart of one of our databases looked like in the process: Free space over time (higher means more free space) Table of Contents The Usual Suspects Unused Indexes Index and Table Bloat Clearing Bloat in Indexes Activating B-Tree Index Deduplication Clearing Bloat in Tables Using pg_repack The "Find" The "Aha Moment" Utilizing Partial Indexes Bonus: Migrating with Django ORM Prevent Implicit Creation of Indexes on Foreign Keys Migrate … -
Using Django Check Constraints to Prevent the Storage of The Empty String
Here’s another use case for creating a database constraint with Django’s CheckConstraint class. By default, a model CharField will store any string that the database supports. This includes the empty string, which is often inappropriate. For example, imagine we have a Team model, representing a group that users can belong to. We started by giving it a unique name: from django.db import models class Team(models.Model): name = models.CharField(max_length=120) class Meta: constraints = [ models.UniqueConstraint( name="%(app_label)s_%(class)s_name_unique", fields=["name"], ), ] Whilst seemingly reasonable, this model definition allows the creation of teams with an empty name. Such a team object is likely to break other parts of our application. For example, links might not display or unexpected errors may occur due to name being falsey. We could try to prevent the creation of empty-named teams with form validation, but that does not prevent creation of bad data through other processes, such as bulk imports. To ensure all the data in our system is valid, we need a database constraint. Here we want to add a minimal database constraint that ensures the length of name is greater than 0. Let’s walk through that now. First, we need to register the Length function for use …