This is an in-progress draft, enjoy.

Introduction

from standalone_apps import intro

Who this book is for

This book is for Django developers who are either new to writing their own standalone apps or who have written them before but are looking for some common guidance. You don't need to be a Django guru-ninja-wizard-whatever to write standalone apps but you will need at least moderate familiarity with Django to use this book.

This book is for developers in two categories:

  • You have been working with Django for at least a little while and now would like to create a standalone app
  • You have written at least one Django standalone app already but there are aspects of creating another or managing your app, from process to corner cases that you're unsure of.

How the book is organized.

Django Standalone Apps is divided into four sections.

1. A basic standalone app from start to finish

The first section, Getting Started, is geared toward the developer who has never written a standalone app and maybe who finds the idea of putting together, and publishing, a Python package a bit daunting. What we cover in this section is designed to be enough to get you started with a basic but working and publishable standalone app.

2. The strategy and mechanics of extracting an app

The second section is a little less code centric. Here we're concerned with the concepts around pulling standalone apps out from existing projects.

In this situation you seemingly have an advantage since you already have working code written, however if you want to extract for reuse you have to identify where to draw the line between likely coupled code in your own project. More challenging is the prospect of not just making a reusable app based on your code, but replacing your original code with your new standalone app.

This section deals with the questions, the decisions, and some strategies for these situations.

3. Dealing with more complex project considerations

The third section, "Advanced Considerations", carries forward the topics in section one including how to work through further issues. How do you best deal with app-specific configuration? How can you support multiple versions of Django or Python?

Some of the topics here overlap with issues you'll face in any Django project, however the details of implemeneting them and implementing them well in a standalone app may pose issues. This is especially true when you start considering scenarios beyond your own immediate use case, something you don't have to worry about in your own projects.

4. Managing a Django app over its lifetime

If the goal of creating a reusable app is to streamline and simplify the process of building Django websites, then here we want to streamline and simplify the process of building and maintaining reusable Django apps.

The fourth section is about managing a Django standalone app in the wild. How do you ensure you have a good release every time? What's the best way of ensuring a Django version compatible pipeline?

There's some overlap here, too, with managing any software package, Python or otherwise, with a special focus on Django.