Hatena::ブログ(Diary)

bojovs blog RSSフィード

2010-11-24

jQueryでAjax on Kay framework

jQueryの$.ajax()から送ったデータをKayで受け取りレスポンスを返すまでのコードをメモしておきます。


index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Top Page - jquery_ajax</title>
</head>
<body>
  <input type="text" id="data">
  <input type="button" value="送信" id="submit">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
  <script type="text/javascript">
    $("#submit").click(function () {
      $.ajax({
        type: "POST",
        url: "/send",
        data: {"data": $("#data").val()},
        success: function (msg) {
          alert("success! : " + msg);
        }
      });
    });
  </script>
</body>
</html>

フォームとボタンを1つずつ用意して、ボタンが押されたらフォームに書いた内容をサーバに送るという内容です。今回はjQueryを使うためにGoogle Libraries APIを使っています。


urls.py

# -*- coding: utf-8 -*-

from kay.routing import (
    ViewGroup, Rule
)

view_groups = [
    ViewGroup(
        Rule('/', endpoint='index', view='jquery_ajax.views.index'),
        Rule('/send', endpoint='send', methods=['POST'], view='jquery_ajax.views.send'),
    )
]

kay.routingのRuleクラスWerkzeugのRuleクラス継承しています。その__init__()にmethodsという引数があったので、それを2つ目のルールで使っています。ここでPOSTメソッドを使うということを書いておけば、Viewでrequest.method == 'POST'とかしなくて済むので、Viewがスッキリします。


views.py

# -*- coding: utf-8 -*-

from werkzeug import Response

from kay.utils import render_to_response


def index(request):
    return render_to_response('jquery_ajax/index.html')

def send(request):
    return Response(request.form['data'] + u'ゲソ')

$.ajax()で送ったデータはrequest.formに格納されています。このrequest.formはWerkzeugのCombinedMultiDictクラスのオブジェクトなので、辞書から要素を取り出すようにキーを指定すれば要素を取得できます。


これで「うまくいった」などとフォームに書いてボタンを押すと、「success! : うまくいったゲソ」とalertされます。

2010-10-11

MacにPython, Distribute, virtualenv(, pip)をインストールしたよ

環境

  • Mac OS X 10.6.4
  • Python 2.6.6
  • Distribute 0.6.14
  • virtualenv 1.5.1
  • pip 0.8.1

Pythonインストールする

$ sudo port install python26
$ sudo port install python_select
$ sudo python_select python26

Distributeをインストールする

Distribute is a fork of the Setuptools project.

http://packages.python.org/distribute

エキスパートPythonプログラミング」を見るまで存在を知りませんでした><

$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py 

virtualenvをインストールする

virtualenv is a tool to create isolated Python environments.

http://virtualenv.openplans.org/
$ sudo easy_install virtualenv

pipはインストールされている

pip installs Python packages.

http://pip.openplans.org/

pipはvirtualenv環境で使えるようになっているので、自分でインストールする必要は(多分)ありません。

$ pip --version
-bash: pip: command not found
$ virtualenv ENV
$ source ENV/bin/activate
(ENV)$ pip --version
pip 0.8.1 from /Users/bojovs/Desktop/ENV/lib/python2.6/site-packages/pip-0.8.1-py2.6.egg (python 2.6)

参考

2008-10-04

Eclipse GanymedeのPlatform版にPDTとPydevを入れてみたよ

あらためてメモしておきます。Platform版を使用しているので、おそらく最小構成だと思います。

Eclipse Ganymedeのインストール

PDTのインストール…の前に

  • PDTをインストールするためにはPDTを動かすためのプラグインをインストールしないといけない
    • EMF(Eclipse Modeling Framework)
    • DLTK(Dynamic Languages Toolkit)
    • DTP(Data Tools Platform)
    • GEF(Graphical Editing Framework)
    • WTP(Web Tools Platform)
  • この「Build Dependencies」についてはhttp://www.eclipse.org/pdt/downloads/に書かれている
EMFのインストール
DLTKのインストール
DTPのインストール
GEFのインストール
  • http://www.eclipse.org/gef/
    • 「Latest Releases」の「GEF + Draw2D」の「Runtime」
      • 「Stable Builds」の方が良かったかな?
    • 「GEF-runtime-3.4.1.zip」
WTPのインストール

PDTのインストール

PDTのインストール完了

f:id:bojovs:20081004233659j:image

(・∀・)

Pydevのインストール

Pydevのインストール完了

f:id:bojovs:20081004233700j:image

Pydevはとっても簡単にインストールできますヽ(´ー`)ノ

それにしても

f:id:bojovs:20081004233701j:image

Ganymedeは起動時の画像がカッコイイですね。