We could manage our Django project by executing some commands which could be invoked through the manage.py. For example:
# Sync database python manage.py syncdb # Start the webserver python manage.py runserver 0.0.0.0:8000
Not only this built-in commands, we can write our own command too.
1. Create a new Django project and in this example i called it custom_command. (Django 1.6.5)
django-admin.py startproject custom_command
2. Move to the project directory and create a new app.
# Move to the project directory cd custom_command # Create a new app and give a proper name, in this example scheduler. python manage.py startapp scheduler
3. Move to the scheduler app folder and create some files as highlighted below. The __init__.py are just empty files.
custom_command + custom_command - manage.py - scheduler - __init__.py - admin.py - models.py - tests.py - views.py - management - __init__.py - commands - __init__.py - hello_world.py
4. Edit the hello_world.py.
from django.core.management.base import BaseCommand class Command(BaseCommand): args = 'Arguments is not needed' help = 'Django admin custom command poc.' def handle(self, *args, **options): self.stdout.write("Hello World")
5. Include the scheduler app in custom_command/settings.py.
# Application definition INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'scheduler', )
6. Move to the project root and generate the db.sqlite3.
python manage.py syncdb
7. Your hello_world command is ready! You could check the help message by:
python manage.py help hello_world
8. Run the hello_world command.
python manage.py hello_world
The custom command could also take input parameters as well as different options. For more details, please refer to the official documentation below.
Done =)
Reference: Django 1.6 – Writing custom django-admin commands
Very nice post! 🙂
LikeLike
You are welcome. =)
LikeLike