Commandsยค
These are all the Django management commands that will be added by installing django_components
:
components
ยค
The entrypoint for the 'components' commands.
Options:
-h
,--help
- show this help message and exit
Subcommands:
create
- Create a new django component.
upgrade
- Upgrade django components syntax from '{% component_block ... %}' to '{% component ... %}'.
ext
- Run extension commands.
list
- List all components created in this project.
The entrypoint for the "components" commands.
python manage.py components list
python manage.py components create <name>
python manage.py components upgrade
python manage.py components ext list
python manage.py components ext run <extension> <command>
components create
ยค
usage: python manage.py components create [-h] [--path PATH] [--js JS] [--css CSS] [--template TEMPLATE]
[--force] [--verbose] [--dry-run]
name
Create a new django component.
Positional Arguments:
name
- The name of the component to create. This is a required argument.
Options:
-h
,--help
- show this help message and exit
--path PATH
- The path to the component's directory. This is an optional argument. If not provided, the command will use the
COMPONENTS.dirs
setting from your Django settings.
- The path to the component's directory. This is an optional argument. If not provided, the command will use the
--js JS
- The name of the JavaScript file. This is an optional argument. The default value is
script.js
.
- The name of the JavaScript file. This is an optional argument. The default value is
--css CSS
- The name of the CSS file. This is an optional argument. The default value is
style.css
.
- The name of the CSS file. This is an optional argument. The default value is
--template TEMPLATE
- The name of the template file. This is an optional argument. The default value is
template.html
.
- The name of the template file. This is an optional argument. The default value is
--force
- This option allows you to overwrite existing files if they exist. This is an optional argument.
--verbose
- This option allows the command to print additional information during component creation. This is an optional argument.
--dry-run
- This option allows you to simulate component creation without actually creating any files. This is an optional argument. The default value is
False
.
- This option allows you to simulate component creation without actually creating any files. This is an optional argument. The default value is
Usageยค
To use the command, run the following command in your terminal:
python manage.py components create <name> --path <path> --js <js_filename> --css <css_filename> --template <template_filename> --force --verbose --dry-run
Replace <name>
, <path>
, <js_filename>
, <css_filename>
, and <template_filename>
with your desired values.
Examplesยค
Here are some examples of how you can use the command:
Creating a Component with Default Settings
To create a component with the default settings, you only need to provide the name of the component:
This will create a new component named my_component
in the components
directory of your Django project. The JavaScript, CSS, and template files will be named script.js
, style.css
, and template.html
, respectively.
Creating a Component with Custom Settings
You can also create a component with custom settings by providing additional arguments:
python manage.py components create new_component --path my_components --js my_script.js --css my_style.css --template my_template.html
This will create a new component named new_component
in the my_components
directory. The JavaScript, CSS, and template files will be named my_script.js
, my_style.css
, and my_template.html
, respectively.
Overwriting an Existing Component
If you want to overwrite an existing component, you can use the --force
option:
This will overwrite the existing my_component
if it exists.
Simulating Component Creation
If you want to simulate the creation of a component without actually creating any files, you can use the --dry-run
option:
This will simulate the creation of my_component
without creating any files.
components upgrade
ยค
Upgrade django components syntax from '{% component_block ... %}' to '{% component ... %}'.
Options:
-h
,--help
- show this help message and exit
--path PATH
- Path to search for components
components ext
ยค
Run extension commands.
Options:
-h
,--help
- show this help message and exit
Subcommands:
Run extension commands.
components ext list
ยค
List all extensions.
Options:
-h
,--help
- show this help message and exit
--all
- Show all columns. Same as
--columns name
.
- Show all columns. Same as
--columns COLUMNS
- Comma-separated list of columns to show. Available columns: name. Defaults to
--columns name
.
- Comma-separated list of columns to show. Available columns: name. Defaults to
-s
,--simple
- Only show table data, without headers. Use this option for generating machine-readable output.
List all extensions.
Prints the list of installed extensions:
To specify which columns to show, use the --columns
flag:
Which prints:
To print out all columns, use the --all
flag:
If you need to omit the title in order to programmatically post-process the output, you can use the --simple
(or -s
) flag:
Which prints just:
components ext run
ยค
Run a command added by an extension.
Options:
-h
,--help
- show this help message and exit
Run a command added by an extension.
Each extension can add its own commands, which will be available to run with this command.
For example, if you define and install the following extension:
from django_components import ComponentCommand, ComponentExtension
class HelloCommand(ComponentCommand):
name = "hello"
help = "Say hello"
def handle(self, *args, **kwargs):
print("Hello, world!")
class MyExt(ComponentExtension):
name = "my_ext"
commands = [HelloCommand]
You can run the hello
command with:
You can also define arguments for the command, which will be passed to the command's handle
method.
from django_components import CommandArg, ComponentCommand, ComponentExtension
class HelloCommand(ComponentCommand):
name = "hello"
help = "Say hello"
arguments = [
CommandArg(name="name", help="The name to say hello to"),
CommandArg(name=["--shout", "-s"], action="store_true"),
]
def handle(self, name: str, *args, **kwargs):
shout = kwargs.get("shout", False)
msg = f"Hello, {name}!"
if shout:
msg = msg.upper()
print(msg)
You can run the command with:
Note
Command arguments and options are based on Python's argparse
module.
For more information, see the argparse documentation.
components list
ยค
List all components created in this project.
Options:
-h
,--help
- show this help message and exit
--all
- Show all columns. Same as
--columns name,full_name,path
.
- Show all columns. Same as
--columns COLUMNS
- Comma-separated list of columns to show. Available columns: name, full_name, path. Defaults to
--columns full_name,path
.
- Comma-separated list of columns to show. Available columns: name, full_name, path. Defaults to
-s
,--simple
- Only show table data, without headers. Use this option for generating machine-readable output.
List all components.
Prints the list of available components:
full_name path
==================================================================================================
project.pages.project.ProjectPage ./project/pages/project
project.components.dashboard.ProjectDashboard ./project/components/dashboard
project.components.dashboard_action.ProjectDashboardAction ./project/components/dashboard_action
To specify which columns to show, use the --columns
flag:
Which prints:
name full_name path
==================================================================================================
ProjectPage project.pages.project.ProjectPage ./project/pages/project
ProjectDashboard project.components.dashboard.ProjectDashboard ./project/components/dashboard
ProjectDashboardAction project.components.dashboard_action.ProjectDashboardAction ./project/components/dashboard_action
To print out all columns, use the --all
flag:
If you need to omit the title in order to programmatically post-process the output, you can use the --simple
(or -s
) flag:
Which prints just:
ProjectPage project.pages.project.ProjectPage ./project/pages/project
ProjectDashboard project.components.dashboard.ProjectDashboard ./project/components/dashboard
ProjectDashboardAction project.components.dashboard_action.ProjectDashboardAction ./project/components/dashboard_action
upgradecomponent
ยค
usage: upgradecomponent [-h] [--path PATH] [--version] [-v {0,1,2,3}]
[--settings SETTINGS] [--pythonpath PYTHONPATH]
[--traceback] [--no-color] [--force-color]
[--skip-checks]
Deprecated. Use components upgrade
instead.
Options:
-h
,--help
- show this help message and exit
--path PATH
- Path to search for components
--version
- Show program's version number and exit.
-v
,--verbosity {0,1,2,3}
- Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output
--settings SETTINGS
- The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used.
--pythonpath PYTHONPATH
- A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".
--traceback
- Raise on CommandError exceptions.
--no-color
- Don't colorize the command output.
--force-color
- Force colorization of the command output.
--skip-checks
- Skip system checks.
Deprecated. Use components upgrade
instead.
startcomponent
ยค
usage: startcomponent [-h] [--path PATH] [--js JS] [--css CSS]
[--template TEMPLATE] [--force] [--verbose] [--dry-run]
[--version] [-v {0,1,2,3}] [--settings SETTINGS]
[--pythonpath PYTHONPATH] [--traceback] [--no-color]
[--force-color] [--skip-checks]
name
Deprecated. Use components create
instead.
Positional Arguments:
name
- The name of the component to create. This is a required argument.
Options:
-h
,--help
- show this help message and exit
--path PATH
- The path to the component's directory. This is an optional argument. If not provided, the command will use the
COMPONENTS.dirs
setting from your Django settings.
- The path to the component's directory. This is an optional argument. If not provided, the command will use the
--js JS
- The name of the JavaScript file. This is an optional argument. The default value is
script.js
.
- The name of the JavaScript file. This is an optional argument. The default value is
--css CSS
- The name of the CSS file. This is an optional argument. The default value is
style.css
.
- The name of the CSS file. This is an optional argument. The default value is
--template TEMPLATE
- The name of the template file. This is an optional argument. The default value is
template.html
.
- The name of the template file. This is an optional argument. The default value is
--force
- This option allows you to overwrite existing files if they exist. This is an optional argument.
--verbose
- This option allows the command to print additional information during component creation. This is an optional argument.
--dry-run
- This option allows you to simulate component creation without actually creating any files. This is an optional argument. The default value is
False
.
- This option allows you to simulate component creation without actually creating any files. This is an optional argument. The default value is
--version
- Show program's version number and exit.
-v
,--verbosity {0,1,2,3}
- Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output
--settings SETTINGS
- The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used.
--pythonpath PYTHONPATH
- A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".
--traceback
- Raise on CommandError exceptions.
--no-color
- Don't colorize the command output.
--force-color
- Force colorization of the command output.
--skip-checks
- Skip system checks.
Deprecated. Use components create
instead.