<?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>Django on Brad's Blog</title><link>https://blog.bjdean.id.au/tags/django/</link><description>Recent content in Django on Brad's Blog</description><generator>Hugo -- 0.152.2</generator><language>en-au</language><copyright>Bradley Dean</copyright><lastBuildDate>Thu, 13 Nov 2025 14:03:04 +1100</lastBuildDate><atom:link href="https://blog.bjdean.id.au/tags/django/index.xml" rel="self" type="application/rss+xml"/><item><title>Embedding Claude Code SDK in Applications</title><link>https://blog.bjdean.id.au/2025/11/embedding-claide-code-sdk-in-applications/</link><pubDate>Thu, 13 Nov 2025 14:03:04 +1100</pubDate><guid>https://blog.bjdean.id.au/2025/11/embedding-claide-code-sdk-in-applications/</guid><description>An introduction to integrating the Claude Code SDK into your applications for production-ready AI agents with full tool access and context management</description></item><item><title>Django Custom Management Commands</title><link>https://blog.bjdean.id.au/2025/11/django-custom-management-commands/</link><pubDate>Wed, 12 Nov 2025 21:09:50 +1100</pubDate><guid>https://blog.bjdean.id.au/2025/11/django-custom-management-commands/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Django allows custom management commands to extend the core &lt;code&gt;manage.py&lt;/code&gt; interface, allowing easy integration with the application when building backend processes, automation scripts, and scheduled jobs (while providing access into the Django application environment, data model and functions via the same structures used to build the website).&lt;/p&gt;
&lt;h2 id="where-to-create-andor-find-the-code"&gt;Where to create and/or find the code&lt;/h2&gt;
&lt;p&gt;Django discovers management commands through a specific directory layout in your apps:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;your_app/
management/
__init__.py
commands/
__init__.py
send_notifications.py
update_reports.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Every command file defines a &lt;code&gt;Command&lt;/code&gt; class that extends &lt;code&gt;BaseCommand&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Django Authentication and Permissions</title><link>https://blog.bjdean.id.au/2025/11/django-authentication-and-permissions/</link><pubDate>Wed, 05 Nov 2025 15:24:37 +1100</pubDate><guid>https://blog.bjdean.id.au/2025/11/django-authentication-and-permissions/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Django provides a complete authentication and authorization sub-system out of the box. Use &lt;code&gt;@login_required&lt;/code&gt; to restrict views to authenticated users and &lt;code&gt;@permission_required&lt;/code&gt; to enforce granular access control based on custom permissions defined in your models.&lt;/p&gt;
&lt;h2 id="interesting"&gt;Interesting!&lt;/h2&gt;
&lt;p&gt;Django automatically creates four default permissions for every model (add, change, delete, view) during migrations, but you can define custom permissions in your model&amp;rsquo;s &lt;code&gt;Meta&lt;/code&gt; class to implement fine-grained authorization for any business logic you need.&lt;/p&gt;</description></item></channel></rss>