Hatena::Groupdann

Python

Python

Pythonの開発環境

See also

http://d.hatena.ne.jp/mopemope/20090225/p1

http://clemesha.org/blog/2009/jul/05/modern-python-hacker-tools-virtualenv-fabric-pip/

python環境のsetup

sudo easy_install pip
sudo pip install django

virtualenvで仮想環境を作り、その仮想環境にpipでインストールするのが基本。

virtualenvの使い方を後で

zsh

これをいれておくと、djangoのmanage.pyのcompletionが効くようになる

http://github.com/technolize/zsh-completion-django

GAEのsetup

GAE用のツールのsetup

Mac


Djangoのプロジェクトのワークフロー

ワークフロー

   1. アプリの作成
   2. Bookモデルの作成
   3. リスト表示のview/templateの作成
   4. URLとviewの紐付け
   5. 本番環境へのupload

GAEプロジェクトの始め方

http://code.google.com/p/app-engine-patch/

  • ここのdownloadにあるサンプルプロジェクトのzipをダウンロード
  • これを展開して、app.ymlを書き換える。appidを取得した者に。

アプリの作成

manage.py startapp <appname>

モデルの作成


URLとviewの紐付け

views.pyで設定。viewsがいわゆるcontroller。

generic_viewというので汎用のviewのlogicを書ける仕組みがある。

本番環境へのupload

manage.py update

django-appengine-patch

http://code.google.com/p/app-engine-patch/wiki/GettingStarted


サーバーの開始

./manage.py runserver

adminユーザの作成

(username, password) = (’admin’, ‘admin’)のログインユーザを作成。

./manage.py shellでpythonシェルを起動

>>> from django.contrib.auth.models import User
>>> user = User(username='admin', is_superuser=True, is_staff=True)
>>> user.set_password('admin')
>>> user.put()

debugging

python版Data::Dumper

    pp = pprint.PrettyPrinter(indent=4)
    logging.warn(pp.pprint(person))

logger

import logging
logging.warn(xx)

GAEアプリの開発の方法

モデルについて

環境 on ec2

load balancer

app server

  • mod_wsgi - ミディアムインスタンス(最大3つ)
  • 常時は一つ

DB server

  • ラージ1つ

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

sys.path.append(os.path.join(os.path.dirname(__file__), 'lib', 'opensocial'))

settings.py は Running Django on Google App Engine - Google App Engine - Google Code のとおりに修正 + import os を ROOT_PATH = os.path.dirname(__file__) の前にいれる。

python一般

ライブラリ

Web系

WebOb, URLRealay, Routes, WebFlash, WebError

Pasterで新規プロジェクト作成

PasteScriptのインストール

sudo pip install pastescript 

pasterコマンドがインストールされるので、これを使う。

新規モジュールの作成

paster create paffy

使えるテンプレート一覧を出す。

paster create --list-templates

* はてなダイアリーキーワード:Python