synopsis: | Runs a script in the django context. |
---|
The runscript command lets you run an arbritrary set of python commands within the django context. It offers the same usability and functionality as running a set of commands in shell accessed by:
$ python manage.py shell
To get started create a scripts directory in your project root, next to manage.py:
$ mkdir scripts
$ touch scripts/__init__.py
Note: The __init__.py file is necessary so that the folder is picked up as a python package.
Next, create a python file with the name of the script you want to run within the scripts directory:
$ touch scripts/delete_all_polls.py
This file must implement a run() function. This is what gets called when you run the script. You can import any models or other parts of your django project to use in these scripts.
For example:
# scripts/delete_all_polls.py
from Polls.models import Poll
def run():
# Get all polls
all_polls = Poll.objects.all()
# Delete polls
all_polls.delete()
Note: You can put a script inside a scripts folder in any of your apps too.
To run any script you use the command runscript with the name of the script that you want to run.
For example:
$ python manage.py runscript delete_all_polls
Note: The command first checks for scripts in your apps i.e. app_name/scripts folder and runs them before checking for and running scripts in the project_root/scripts folder. You can have multiple scripts with the same name and they will all be run sequentially.