<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on Gaëtan Grond</title>
    <link>https://gaetangrond.me/en/tags/python/</link>
    <description>Recent content in Python on Gaëtan Grond</description>
    <image>
      <title>Gaëtan Grond</title>
      <url>https://gaetangrond.me/logo-2.png</url>
      <link>https://gaetangrond.me/logo-2.png</link>
    </image>
    <generator>Hugo -- 0.165.0</generator>
    <language>en-GB</language>
    <lastBuildDate>Tue, 08 Sep 2026 22:41:09 +0200</lastBuildDate>
    <atom:link href="https://gaetangrond.me/en/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Django Best Practices: Lessons from 6 Years Building a Large-Scale SaaS</title>
      <link>https://gaetangrond.me/posts/django/16-tips-django/</link>
      <pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://gaetangrond.me/posts/django/16-tips-django/</guid>
      <description>A pragmatic guide to Django architecture patterns, based on real-world experience building and scaling a large SaaS application over 6 years.</description>
    </item>
    <item>
      <title>Django Packages I Have Used and Loved in 2024</title>
      <link>https://gaetangrond.me/posts/django/django-packages-i-have-used-and-loved-in-2024/</link>
      <pubDate>Fri, 03 Jan 2025 15:37:34 +0200</pubDate>
      <guid>https://gaetangrond.me/posts/django/django-packages-i-have-used-and-loved-in-2024/</guid>
      <description>&lt;p&gt;It has been almost 4 years since I launched my SaaS business in Django, while fancier Python frameworks have been released since then, Django still remains king of the Python web framework. Thanks to an ever-growing ecosystem of packages and their outstanding stability.&lt;/p&gt;
&lt;p&gt;Only the most useful and stable packages have made the cut, links to the official package source are included in the title itself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>8 Django Tips and Tricks Learned Over the Years</title>
      <link>https://gaetangrond.me/posts/django/8-django-tips-and-tricks-learned-over-the-years/</link>
      <pubDate>Tue, 12 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://gaetangrond.me/posts/django/8-django-tips-and-tricks-learned-over-the-years/</guid>
      <description>&lt;p&gt;After working with Django for more than 4 years both professionally and personally, I have learned a lot of tips and tricks that I wish I knew when I started. In this article I will share some of the most important ones that I have learned over the years.&lt;/p&gt;
&lt;p&gt;Since Django documentation is very good, I will not share many code snippets, but rather explain the concepts and provide links to the official documentation.
All of these tips and tricks came from my own experience, the Django documentation, and Two Scoops of Django book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Protecting Data in Django Admin: Preventing Accidental Deletions</title>
      <link>https://gaetangrond.me/posts/django/protecting-data-in-django-admin-preventing-accidental-deletions/</link>
      <pubDate>Mon, 23 Sep 2024 10:20:23 +0200</pubDate>
      <guid>https://gaetangrond.me/posts/django/protecting-data-in-django-admin-preventing-accidental-deletions/</guid>
      <description>&lt;p&gt;The Django admin interface is one of the standout features that make Django such a powerful framework. It allows you to manage your data, customers, and models with ease. However, as with any tool that provides significant control over your application’s data, there’s a need to ensure that sensitive actions like deletions are handled carefully.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Storing List in Models with Django</title>
      <link>https://gaetangrond.me/posts/django/storing-list-in-models-with-django/</link>
      <pubDate>Wed, 04 Sep 2024 08:53:57 +0000</pubDate>
      <guid>https://gaetangrond.me/posts/django/storing-list-in-models-with-django/</guid>
      <description>Three ways to store a list in a Django model — ArrayField, JSONField and a related model — and how to pick the right one.</description>
    </item>
    <item>
      <title>Fluent Python - My Private Notes</title>
      <link>https://gaetangrond.me/posts/dev/fluent-python-private-notes/</link>
      <pubDate>Sun, 25 Aug 2024 14:15:49 +0200</pubDate>
      <guid>https://gaetangrond.me/posts/dev/fluent-python-private-notes/</guid>
      <description>&lt;p&gt;These are my personal notes from reading Fluent Python. They’re a bit scattered, but I’ve found them useful for understanding some of Python’s more advanced features, like decorators, generators, and defensive programming.&lt;/p&gt;
&lt;p&gt;I’m sharing them here in case they’re helpful to others working through similar topics or if you’re considering reading the book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a Simple Maintenance Feature in Django</title>
      <link>https://gaetangrond.me/posts/django/create-a-simple-maintenance-feature-in-django/</link>
      <pubDate>Sat, 05 Aug 2023 13:10:40 +0200</pubDate>
      <guid>https://gaetangrond.me/posts/django/create-a-simple-maintenance-feature-in-django/</guid>
      <description>&lt;p&gt;When working with Django for my startup I performed on several occasions very complex migrations and maintenance tasks that required the site not to be accessible for a few minutes and sometimes even hours.&lt;/p&gt;
&lt;p&gt;Even if the end user is not able to access the site, our team of superusers and admins should be able to access the site and perform the maintenance tasks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure Your Django Administration with 6 simple steps</title>
      <link>https://gaetangrond.me/posts/django/secure-your-django-administration/</link>
      <pubDate>Thu, 03 Aug 2023 07:00:00 +0000</pubDate>
      <guid>https://gaetangrond.me/posts/django/secure-your-django-administration/</guid>
      <description>&lt;p&gt;One of the most loved features of Django is the built-in administration interface. It allows for an easy way to manage your data and is highly customizable. However, it is also a very common target for attackers.&lt;/p&gt;
&lt;p&gt;In this article, we will look at some of the most common attacks against the Django administration interface and how to protect against them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Customize The CSRF Failure View in Django</title>
      <link>https://gaetangrond.me/posts/django/how-to-customize-csrf-failure-view-django/</link>
      <pubDate>Tue, 01 Aug 2023 13:02:50 +0200</pubDate>
      <guid>https://gaetangrond.me/posts/django/how-to-customize-csrf-failure-view-django/</guid>
      <description>&lt;p&gt;When working with Django and third party libraries, you may encounter a CSRF error on login or any other form submission. This is because Django requires a CSRF token to be sent with every form submission except GET requests or if the form has the &lt;code&gt;csrf_exempt&lt;/code&gt; decorator.&lt;/p&gt;
&lt;p&gt;During my work with Django, I have encountered this error many times, sometimes due to my own mistakes and sometimes due to third party libraries or user behavior.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
