概要
「Django」の機能はWebアプリとして利用したことしかないので、スクリプトとして利用する方法を調査してみた。
ドキュメント
公式ドキュメント(英語)の「Writing custom django-admin commands」に手順が書いてある。
「django-admin.py」がそもそも Django で作成されているスクリプトで、ソースコードは「django/core/management/commands」に存在している。
手順
付属のツール「django-admin.py」を利用してプロジェクトの雛形を作成する。
「django-admin.py」は pip 等でインストールすると、適切な場所にインストールされるのでパスを通しておくと良い。
以下のように利用する。
django-admin.py startproject mysite
ディレクトリ構成は以下のようになる。
mysite
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
次にアプリケーションを作成する。
python manage.py startapp example
アプリケーションが作成できたら、「management/commands」ディレクトリを作成する。
mkdir -p example/management/commands
touch example/management/__init__.py
touch example/management/commands/__init__.py
「settings.py」の「INSTALLED_APPS」にアプリケーションを有効化するために追加する。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# 以下を追加
'example',
)
「example/management/commands」以下にスクリプトを作成。とりあえず、「sample.py」の名前で以下のように作成。
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **options):
print 'さんぷるそーす'
ディレクトリ構成は以下のようになる。
mysite
├── example
│ ├── __init__.py
│ ├── management
│ │ ├── __init__.py
│ │ └── commands
│ │ ├── __init__.py
│ │ ├── sample.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
実行は以下のようにする。
python manage.py sample
「さんぷるそーす」と表示されれば成功。
まとめ
これで Django の機能をコマンドラインで利用できるようになった。結構便利。