ということで色々試してみた。以下、わかったこと:
1. Djangoをzipする必要なし
ただしdjango-admin.pyとかmanage.pyとかで楽チンすることはできなくなる。まあ、そんなに面倒な事もないでしょ。GAEのコンソールも使えるし。
2. ローカルにDjangoをインストールする必要もなし
google_appengineディレクトリ配下に必要なDjangoのライブラリは入っている。
3. Virtualenvの元でも動く
先日書いたとおり。
で、django-admin.py使わないということはディレクトリ配置やsettings.pyとかurls.pyとかを自前で打ち込むということなわけで、大した話ではない。まずディレクトリ配置はこんな感じ。
. ├── app.yaml ├── main.py ├── project │ ├── __init__.py │ ├── poll │ │ ├── __init__.py │ │ ├── views.py │ ├── settings.py │ ├── templates │ │ └── __init__.py │ ├── urls.py
app.yaml
librariesというエントリでDjango 1.2を使うことを宣言。
application: helloworld version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: main.app libraries: - name: django version: "1.2"
main.py
settings.pyの所在を定義。
import os os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' import django.core.handlers.wsgi app = django.core.handlers.wsgi.WSGIHandler()
project/settings.py
必要なライブラリとアプリケーション所在場所、urls.pyの場所を定義。テンプレートを使う場合はその所在場所を定義。
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', ) INSTALLED_APPS = ( 'project.poll' ) ROOT_URLCONF = 'project.urls' import os ROOT_PATH = os.path.dirname(__file__) TEMPLATE_DIRS = ( ROOT_PATH + '/templates', )
project/urls.py
URL定義は通常のDjangoアプリと同じ。
from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^$', 'project.poll.views.index'), )
project/poll/views.py
テスト用簡単なview
from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^$', 'project.poll.views.index'), ) (GAE)masayang@ubuntu-vm:~/Documents/GAE/dempa$ cat project/poll/views.py from django.http import HttpResponse def index(request): return HttpResponse("Hello")
0 件のコメント:
コメントを投稿