最近、Googleのサイトに上がっているMastering the datastoreの一連の記事を読みました。今まで、わりと適当にGoogle App Engine のデータストアを扱っており、いくら趣味プログラミングとはいえ、ある程度は内部処理についての知識がないと突っ込んだことは…
先週に投稿したエントリで、Google App EngineではDjango0.96しか使えないようなことを書いたのですが、ちゃんと調べてみると、現在のGoogle App EngineではDjangoの1.1および1.0.2のバージョンも使用できることがわかりました。英語のドキュメントにしか載…
DjangoのTemplateでは、{% for a in list %}...{% endfor %}を使うことで、リストの内容を順番に処理していくことができます。 それと同じように、ディクショナリに登録されている内容を順番に表示させようと考えたのですが、 Google App Engine のDjangoの…
久々にプロジェクトのサイトを見てみると、8月にリリースされたあとは、新しいバージョンが出ていないようだ。 プロジェクトの続行を心配する書き込みもサイトにあったようで、せっかくの良いプロジェクトなのにと少し心配になった。
どんだけ放置してるんだと自分でも気になっているんですが、実際ほとんどサンデープログラマー活動を進められなかったという。なんというか、不況のあおりなのか何なのか、全体的に受注とか単価とかがモリモリ下がり気味で無駄に忙しくなっていますが、同業…
前回で、タスクの追加、開始と停止、削除は実装しました。そこで今回は、タスク名の編集機能をつけようと思います。大まかな仕様としては、表示されているタスク名をクリックするとテキストボックスに変わり、そのテキストボックスに新しいタスク名を入力し…
調査が終わったところで、なんかちょっと作ってみようと思います。というところで、最初に思いついたのが「各仕事の作業時間を記録する」ページです。私は、普段の仕事では、『あっちを少しやって、そのあとこっちも少しやって、また別件のメールを書いて、…
表題の件について結構悩んだので、自分の中のまとめの意味を込めて記録を残しておきます。まず、ひとつのモジュールを単純に別のページで使いまわすには、そのモジュールがコンパイルされたjsファイルをscriptタグで取り込むだけで大丈夫です。たとえば、ロ…
気がつけば、もう4ヶ月も放置してしまっていた。仕事上でいろいろ忙しかったりすると、こういうサンデープログラマ的活動は止まってしまうという。で、ちょっと気分を変えて、Google App Engine for Javaにも手を出してみることにしました。ただ、それだけ…
前回で、TODOタスクに状態を持たせることができました。今度は、その状態の表示と、状態変化のロジックを実装することにします。まず、TODOタスクの状態変化処理用のメソッドを用意します。/todo/views.py def update_task_status(request): if not request.…
これまでTODOタスクは追加と削除だけができるものでしたが、実際にTODO管理をしようとすると、それがどういう状況なのかを記録したくなると思います。といっても、あまり複雑にするとややこしくなるので、以下の4つの状態をとれるということにします。 未着…
それでは、メールによる締切通知部分を作成しようと思います。まず、締切時にメールを送信する設定になっていて、かつ、締切を過ぎているのにまだメールを送信していないTODOタスクを抜き出します。 now = datetime.datetime.today() now += datetime.timede…
締め切りがきたらメールを送る機能を実装するにあたり、これまでのTaskモデルクラスだと情報が足りないので、締め切りをメールで通知するか/いつメールを送ったかを格納するプロパティを加えることにします。/todo/models.py class Task(db.Model): user = …
あっという間に3週間ほど放置状態となってしまいました。プライベートで何か忙しくなると、とたんに滞ってしまったりするのが趣味プログラミングの辛いところだったりします。まぁ、あせらず気長に続けていこうと思います。ちょっと間があきましたが、前回…
あまりにも殺風景だったので、ちょっとデザインをいじってみました。といっても、ちゃんとWebデザインできるスキルは持ち合わせていないので、ちょっとましになったか程度ですけれど。金星翻車魚(キンボシマンボウ)
前回で、TODOタスクの追加と一覧までは実現できたので、今回からは編集と削除処理を作っていきます。削除処理については、汎用ビューのdjango.views.generic.create_update.delete_objectを使います。利用手順としては、まず、views.pyに削除処理用のメソッ…
ちょっと意味のあるアプリケーションとして、TODO管理機能を作っていくことにします。Djangoと同じく、以下のコマンドでアプリケーションが生成されます。 manage.py startapp todoこれによりtodoフォルダができますので、中身を確認すると、以下のファイル…
app-engine-patchを導入すると、ユーザアカウントの管理方法として、以下の3つが選択できるようになります。 Googleアカウントを利用する 独自のアカウント管理を利用する Googleアカウントと独自のアカウント管理を併用する 今のところ、Googleアカウント…
app-engine-patchにおいてもModelはGoogleのモデルを使うようなので、前のアクセスカウンタ用のモデルをそのまま流用します。前回からの変更点として、views.pyを新たに生成し、カウンタアップのロジックをここに移動させました。views.py # -*- coding: utf…
GettingStartedと、Unleash Django with app-engine-patchの記事を見て、app-engine-patchの使い方を理解しようとするも、分ったような分からないような。やっぱり実際に試してみないとよくわかりませんね。というわけで、やってみます。まず、Downloads app…
そろそろなんらかの動きのあるアプリケーションを作りだそうと思ったのですが、このままgoogle.appengine.ext.webappパッケージを使ってゴリゴリと書いていっていいのかとちょっと悩みました。躊躇した点は、以下。 webappパッケージを使い続けると、Google …
ここまで、Webブラウザに表示する画面はすべてプログラムで生成してきましたが、Webアプリケーションを作る上においては、当然のことながら、画像やcssファイル等々の静的なファイルを使う必要があります。 Google App Engineでそれらの静的コンテンツを提供…
そろそろ、ちょっと動的な要素を加えてみます。まずは、簡単なアクセスカウンターから。データストアにアクセス数保持用の簡単な領域を用意し、トップページにアクセスがあるたびにその値を更新したうえで、画面上に表示します。Google App Engineでデータを…
このままPythonのファイルにつらつらとHTMLを書き続けるのも問題なので、PythonのコードとHTMLとを分離します。Google App Engineでは、Django(Python製の著名なWebフレームワークのひとつ)のtemplateライブラリが設定の必要なく使えるようなので、これを…
Getting Started: Pythonを一通り読んでみました。読んだだけでは分かったような分からなかったような、そんな感じです。まぁ、とりあえず、トップページを作ってみましょう。開発に際しては、Google App Engine SDKのダウンロードをお忘れなく。まず、アプ…
Google App Engineのアカウント登録時に携帯のメールアドレスを要求されます。携帯のメールアドレスを知らせると、そのメールアドレス宛に「Google App Engine Code」なる番号が届くので、それを入力すると、Google App Engineが利用できるようになります。…