community.general.django_manage module – Manages a Django application

Note

This module is part of the community.general collection (version 10.1.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.general. You need further requirements to be able to use this module, see Requirements for details.

To use it in a playbook, specify: community.general.django_manage.

Synopsis

  • Manages a Django application using the manage.py application frontend to django-admin. With the virtualenv parameter, all management commands will be executed by the given virtualenv installation.

Requirements

The below requirements are needed on the host that executes this module.

  • django >= 4.1

Parameters

Parameter

Comments

ack_venv_creation_deprecation

boolean

added in community.general 5.8.0

This option no longer has any effect since community.general 9.0.0.

It will be removed from community.general 11.0.0.

Choices:

  • false

  • true

apps

string

A list of space-delimited apps to target. Used by the test command.

cache_table

string

The name of the table used for database-backed caching. Used by the createcachetable command.

clear

boolean

Clear the existing files before trying to copy or link the original file.

Used only with the collectstatic command. The --noinput argument will be added automatically.

Choices:

  • false ← (default)

  • true

command

string / required

The name of the Django management command to run. The commands listed below are built in this module and have some basic parameter validation.

collectstatic - Collects the static files into STATIC_ROOT.

createcachetable - Creates the cache tables for use with the database cache backend.

flush - Removes all data from the database.

loaddata - Searches for and loads the contents of the named fixtures into the database.

migrate - Synchronizes the database state with models and migrations.

test - Runs tests for all installed apps.

Other commands can be entered, but will fail if they are unknown to Django. Other commands that may prompt for user input should be run with the --noinput flag.

Support for the values cleanup, syncdb, validate was removed in community.general 9.0.0. See note about supported versions of Django.

database

string

The database to target. Used by the createcachetable, flush, loaddata, syncdb, and migrate commands.

failfast

aliases: fail_fast

boolean

Fail the command immediately if a test fails. Used by the test command.

Choices:

  • false ← (default)

  • true

fixtures

string

A space-delimited list of fixture file names to load in the database. Required by the loaddata command.

boolean

Will create links to the files instead of copying them, you can only use this parameter with collectstatic command.

Choices:

  • false

  • true

merge

boolean

Will run out-of-order or missing migrations as they are not rollback migrations, you can only use this parameter with migrate command.

Choices:

  • false

  • true

project_path

aliases: app_path, chdir

path / required

The path to the root of the Django application where manage.py lives.

pythonpath

aliases: python_path

path

A directory to add to the Python path. Typically used to include the settings module if it is located external to the application directory.

This would be equivalent to adding pythonpath‘s value to the PYTHONPATH environment variable.

settings

path

The Python path to the application’s settings module, such as myapp.settings.

skip

boolean

Will skip over out-of-order missing migrations, you can only use this parameter with migrate command.

Choices:

  • false

  • true

testrunner

aliases: test_runner

string

Controls the test runner class that is used to execute tests.

This parameter is passed as-is to manage.py.

virtualenv

aliases: virtual_env

path

An optional path to a virtualenv installation to use while running the manage application.

The virtual environment must exist, otherwise the module will fail.

Attributes

Attribute

Support

Description

check_mode

Support: none

Can run in check_mode and return changed status prediction without modifying target.

diff_mode

Support: none

Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode.

Notes

Note

  • ATTENTION: Support for Django releases older than 4.1 has been removed in community.general version 9.0.0. While the module allows for free-form commands does not verify the version of Django being used, it is strongly recommended to use a more recent version of Django.

  • Please notice that Django 4.1 requires Python 3.8 or greater.

  • This module will not create a virtualenv if the virtualenv parameter is specified and a virtual environment does not already exist at the given location. This behavior changed in community.general version 9.0.0.

  • The recommended way to create a virtual environment in Ansible is by using ansible.builtin.pip.

  • This module assumes English error messages for the createcachetable command to detect table existence, unfortunately.

  • To be able to use the collectstatic command, you must have enabled staticfiles in your settings.

  • Your manage.py application must be executable (rwxr-xr-x), and must have a valid shebang, for example #!/usr/bin/env python, for invoking the appropriate Python interpreter.

See Also

See also

django-admin and manage.py Reference

Reference for django-admin or manage.py commands.

Django Download page

The page showing how to get Django and the timeline of supported releases.

What Python version can I use with Django?

From the Django FAQ, the response to Python requirements for the framework.

Examples

- name: Run cleanup on the application installed in django_dir
  community.general.django_manage:
    command: clearsessions
    project_path: "{{ django_dir }}"

- name: Load the initial_data fixture into the application
  community.general.django_manage:
    command: loaddata
    project_path: "{{ django_dir }}"
    fixtures: "{{ initial_data }}"

- name: Run syncdb on the application
  community.general.django_manage:
    command: migrate
    project_path: "{{ django_dir }}"
    settings: "{{ settings_app_name }}"
    pythonpath: "{{ settings_dir }}"
    virtualenv: "{{ virtualenv_dir }}"

- name: Run the SmokeTest test case from the main app. Useful for testing deploys
  community.general.django_manage:
    command: test
    project_path: "{{ django_dir }}"
    apps: main.SmokeTest

- name: Create an initial superuser
  community.general.django_manage:
    command: "createsuperuser --noinput --username=admin [email protected]"
    project_path: "{{ django_dir }}"

Authors

  • Alexei Znamensky (@russoz)

  • Scott Anderson (@tastychutney)