2009-06-19

Google App EngineのDjangoでチュートリアルをやってみる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App Engine上のDjangoは、使えるデータベースが特殊なため以下のDjangoのマニュアルにあるチュートリアルはそのままではできないようです。
http://djangoproject.jp/doc/ja/1.0/index.html

なのでGoogle App Engine上のDjangoでのチュートリアルが
http://webos-goodies.jp/archives/51337216.html
にあるので、こちらを参考にしたわけですがそのままでは動きませんでした。
私の作成した環境が
Google App EngineでDjangoを利用する
で紹介させていただいたように、Djangoは1.0.2を利用していて更にGoogle App Engine Helperを利用している環境のためだろうと思います。

というわけで私の環境で
http://webos-goodies.jp/archives/51337216.html
で紹介してあるチュートリアルを動くようするための変更点を紹介させていただきます。

まずhelperを入れているので
python manage.py startapp poll
の前まではすでに準備が出来ているので何もしません。

settings.pyのINSTALLED_APPSだけを以下のように変更します:

INSTALLED_APPS = (
'appengine_django',
'poll',
)


url.pyは、以下のように変更します。

from django.conf.urls.defaults import *

urlpatterns = patterns('poll.views',
(r'^$', 'index'),
(r'^create/$', 'create'),
(r'^poll/(?P[^\.^/]+)/$', 'poll_detail'),
(r'^poll/(?P[^\.^/]+)/results/$', 'poll_results'),
)


models.pyは紹介しているままです。

bforms.pyは、以下のようにします。
formsのimportとcleaned_dataの部分を修正しています。
このファイルは、pollディレクトリに作成します。

from django import forms
import models
from google.appengine.ext.db import djangoforms

class PollForm(djangoforms.ModelForm):
class Meta:
model = models.Poll
exclude = ['created_by']

class ChoiceForm(forms.Form):
choice = forms.CharField(max_length = 100)

def __init__(self, poll=None, *args, **kwargs):
self.poll = poll
super(ChoiceForm, self).__init__(*args, **kwargs)

def save(self):
choice = models.Choice(poll = self.poll, choice = self.cleaned_data['choice'])
choice.put()


views.pyは、
from pollango.poll import models
となっているものを
from poll import models
に直すだけです。

後は、http://webos-goodies.jp/archives/51337216.htmlに書いてある通りで動くようになりました。
コメントを投稿