community.general.django_manage 模块 – 管理 Django 应用程序

注意

此模块是 community.general 集合(版本 10.1.0)的一部分。

如果您正在使用 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要进一步的要求才能使用此模块,请参阅 要求 了解详细信息。

要在 playbook 中使用它,请指定:community.general.django_manage

概要

  • 使用 manage.py 应用程序前端到 django-admin 来管理 Django 应用程序。使用 virtualenv 参数,所有管理命令将由给定的 virtualenv 安装执行。

要求

在执行此模块的主机上需要以下要求。

  • django >= 4.1

参数

参数

注释

ack_venv_creation_deprecation

布尔值

在 community.general 5.8.0 中添加

自 community.general 9.0.0 以来,此选项不再有任何效果。

它将从 community.general 11.0.0 中删除。

选择

  • false

  • true

apps

字符串

要定位的以空格分隔的应用程序列表。由 test 命令使用。

cache_table

字符串

用于数据库支持的缓存的表名称。由 createcachetable 命令使用。

clear

布尔值

在尝试复制或链接原始文件之前,清除现有文件。

仅与 collectstatic 命令一起使用。将自动添加 --noinput 参数。

选择

  • false ←(默认)

  • true

command

字符串 / 必需

要运行的 Django 管理命令的名称。下面列出的命令在此模块中内置,并具有一些基本的参数验证。

collectstatic - 将静态文件收集到 STATIC_ROOT 中。

createcachetable - 创建用于数据库缓存后端的缓存表。

flush - 从数据库中删除所有数据。

loaddata - 搜索并将命名 fixtures 的内容加载到数据库中。

migrate - 将数据库状态与模型和迁移同步。

test - 为所有已安装的应用程序运行测试。

可以输入其他命令,但如果它们对 Django 未知,则会失败。其他可能提示用户输入的命令应使用 --noinput 标志运行。

对值 cleanupsyncdbvalidate 的支持已在 community.general 9.0.0 中删除。请参阅有关支持的 Django 版本的说明。

database

字符串

要定位的数据库。由 createcachetableflushloaddatasyncdbmigrate 命令使用。

failfast

别名:fail_fast

布尔值

如果测试失败,则立即使命令失败。由 test 命令使用。

选择

  • false ←(默认)

  • true

fixtures

字符串

要加载到数据库中的以空格分隔的 fixture 文件名列表。 loaddata 命令必需

布尔值

将创建指向文件的链接而不是复制它们,您只能将此参数与 collectstatic 命令一起使用。

选择

  • false

  • true

merge

布尔值

将按顺序运行或缺少迁移,因为它们不是回滚迁移,您只能将此参数与 migrate 命令一起使用。

选择

  • false

  • true

project_path

别名:app_path, chdir

路径 / 必需

指向 Django 应用程序根目录的路径,其中包含 manage.py 文件。

pythonpath

别名: python_path

路径

要添加到 Python 路径的目录。通常用于包含位于应用程序目录外部的 settings 模块。

这相当于将 pythonpath 的值添加到 PYTHONPATH 环境变量中。

settings

路径

应用程序的 settings 模块的 Python 路径,例如 myapp.settings

skip

布尔值

将跳过顺序错误的缺失迁移,此参数只能与 migrate 命令一起使用。

选择

  • false

  • true

testrunner

别名: test_runner

字符串

控制用于执行测试的测试运行器类。

此参数会原样传递给 manage.py

virtualenv

别名: virtual_env

路径

在运行管理应用程序时使用的 virtualenv 安装的可选路径。

虚拟环境必须存在,否则模块将失败。

属性

属性

支持

描述

check_mode

支持:

可以在 check_mode 中运行,并返回更改状态预测,而无需修改目标。

diff_mode

支持:

当处于 diff 模式时,将返回已更改的内容(或可能需要在 check_mode 中更改的内容)的详细信息。

注意

注意

  • 注意: 在 community.general 版本 9.0.0 中,已移除对 Django 4.1 之前版本的支持。虽然该模块允许自由格式的命令,但不会验证正在使用的 Django 版本,强烈建议使用较新版本的 Django。

  • 请注意,Django 4.1 需要 Python 3.8 或更高版本。

  • 如果指定了 virtualenv 参数,并且给定位置尚不存在虚拟环境,则此模块不会创建虚拟环境。此行为在 community.general 版本 9.0.0 中发生了更改。

  • 在 Ansible 中创建虚拟环境的推荐方法是使用 ansible.builtin.pip

  • 不幸的是,此模块假定 createcachetable 命令使用英语错误消息来检测表是否存在。

  • 要使用 collectstatic 命令,您必须在您的设置中启用 staticfiles

  • 您的 manage.py 应用程序必须是可执行的(rwxr-xr-x),并且必须具有有效的 shebang,例如 #!/usr/bin/env python,用于调用适当的 Python 解释器。

另请参阅

另请参阅

django-admin 和 manage.py 参考

关于 django-adminmanage.py 命令的参考。

Django 下载页面

显示如何获取 Django 以及受支持版本的发布时间线的页面。

我可以使用哪个 Python 版本来配合 Django?

来自 Django 常见问题解答,关于框架的 Python 要求的回应。

示例

- 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 }}"

作者

  • Alexei Znamensky (@russoz)

  • Scott Anderson (@tastychutney)