Packaging Stand-Alone Django Apps

From Littledamien Wiki
Jump to navigation Jump to search

Directory structure

The app goes in a directory outside of any Django web project. If the app is addresses, structure it littled-addresses/addresses/.[1]

Try to avoid naming conflicts, of course. (Check resources like PyPI.)

Building the package

$ python setup.py sdist
  • Run from the package root directory.
  • Creates a dist directory which contains the (zipped) package.

Using the package

Installing the package

$ pip install --user django-addresses/dist/django-addresses-0.1.tar.gz

This installs the package on a system as a user library.

It can now be referenced in other Django projects.

Using the package in a project

Assuming that the package is

|
 +-- django-addresses
      |
      +-- addresses
      |    |
      |    +- [...]
      |
      [...]

In the project's settings.py:

INSTALLED_APPS = (
        ...
        'addresses',
    )

Then from the web project root:

$ python manage.py migrate

To reference the objects in a model within the web project:

class Person(models.Model):
    address = models.ForeignKey('addresses.Address')
    # ...

Uninstalling the package

$ pip uninstall django-addresses

Notes

  1. How to Write Reusable Apps (Django documentation)