2012/10/08

Pythonのマイクロウェブフレームワークの「Flask」のチュートリアルを試してみました。

Pythonのマイクロウェブフレームワークの「Flask」のチュートリアルを試してみました。


Flaskへ ようこそ - Flask v0.5.1 documentation
http://a2c.bitbucket.org/flask/

のサイト内のチュートリアルを基に試してみます。
但し、日本語に訳されてるこのバージョンは古く、最新版のFlaskは、0.9です。

Welcome to Flask - Flask 0.9dev documentation
http://flask.pocoo.org/docs/

しかし、チュートリアルの内容は、変わっていないようでした。

MacBook AirのMac OSXの10.7.4の環境で行います。
まず、virtualenvの環境構築を行います。

Flaskのインストールについて - virtualenv
http://a2c.bitbucket.org/flask/installation.html#virtualenv

Flaskのチュートリアルにvirtualenvの環境が必須という訳ではありません。しかし、virtualenvを使った方が、MacBook AirのPythonの環境に影響を与えず、仮想環境内のPythonで完結するので、virtualenvを使います。

Linuxでは、システムの管理自体にPythonを使っていることが多く、Pythonのバージョンを上げてしまうと、システム自体に支障が出ることもあります。以前、間違ってPythonのバージョンを上げてしまい。yumが動かなくなって、困ったことがありました。

virtualenvについては、下記でのサイトの説明が分かりやすいです。

今日のPython - VIRTUALENV について
http://blog1.erp2py.com/2011/07/virtualenv.html

virtualenvをインストールします。
$ pip install virtualenv
仮想環境の入る前に、Pythonの環境について確認しておきます。
$ pip freeze
Django==1.3.1
PIL==1.1.7
PyRSS2Gen==1.0.0
Twisted==11.0.0
altgraph==0.7.1
bdist-mpkg==0.4.4
bonjour-py==0.3
distribute==0.6.26
include-server==3.1-toolwhip.1
macholib==1.3
modulegraph==0.8.1
numpy==1.5.1
py2app==0.5.3
pyOpenSSL==0.12
pyobjc-core==2.3.2a0
pyobjc-framework-AddressBook==2.3.2a0
pyobjc-framework-AppleScriptKit==2.3.2a0
pyobjc-framework-AppleScriptObjC==2.3.2a0
pyobjc-framework-Automator==2.3.2a0
pyobjc-framework-CFNetwork==2.3.2a0
pyobjc-framework-CalendarStore==2.3.2a0
pyobjc-framework-Cocoa==2.3.2a0
pyobjc-framework-Collaboration==2.3.2a0
pyobjc-framework-CoreData==2.3.2a0
pyobjc-framework-CoreLocation==2.3.2a0
pyobjc-framework-CoreText==2.3.2a0
pyobjc-framework-DictionaryServices==2.3.2a0
pyobjc-framework-ExceptionHandling==2.3.2a0
pyobjc-framework-FSEvents==2.3.2a0
pyobjc-framework-InputMethodKit==2.3.2a0
pyobjc-framework-InstallerPlugins==2.3.2a0
pyobjc-framework-InstantMessage==2.3.2a0
pyobjc-framework-InterfaceBuilderKit==2.3.2a0
pyobjc-framework-LatentSemanticMapping==2.3.2a0
pyobjc-framework-LaunchServices==2.3.2a0
pyobjc-framework-Message==2.3.2a0
pyobjc-framework-OpenDirectory==2.3.2a0
pyobjc-framework-PreferencePanes==2.3.2a0
pyobjc-framework-PubSub==2.3.2a0
pyobjc-framework-QTKit==2.3.2a0
pyobjc-framework-Quartz==2.3.2a0
pyobjc-framework-ScreenSaver==2.3.2a0
pyobjc-framework-ScriptingBridge==2.3.2a0
pyobjc-framework-SearchKit==2.3.2a0
pyobjc-framework-ServerNotification==2.3.2a0
pyobjc-framework-ServiceManagement==2.3.2a0
pyobjc-framework-SyncServices==2.3.2a0
pyobjc-framework-SystemConfiguration==2.3.2a0
pyobjc-framework-WebKit==2.3.2a0
pyobjc-framework-XgridFoundation==2.3.2a0
python-dateutil==1.5
virtualenv==1.7.1.2
wsgiref==0.1.2
xattr==0.6.1
zope.interface==3.5.1
次に、myprojectというフォルダを作って、envと言う名前の仮想環境を作成します。
$ mkdir myproject
$ cd myproject
$ virtualenv env
New python executable in env/bin/python
Installing setuptools............done.
envという仮想環境をアクティブにします。
$  . env/bin/activate
あるいは
$ source env/bin/activate
シェルの前に括弧付きで仮想環境名が表示されれば、仮想環境に入っています。
(env)$ 
仮想環境を抜け出すためには、deactivateコマンドを使います。
(env)$ deactivate
仮想環境の状態で、Pythonの環境を確認します。
(env)$ pip freeze
wsgiref==0.1.2
別のPython環境に入っていることが分かります。 Flaskをインストールします。
(env)$ pip install flask
インストール後、Pythonの環境を確認します。
(env)$ pip freeze
Flask==0.9
Jinja2==2.6
Werkzeug==0.8.3
wsgiref==0.1.2
Flaskは、2つのライブラリの依存しているので、その2つのライブラリも一緒にインストールされています。「Jinja2(ジンジャ2)」というテンプレートシステムと、Werkzeug(ウェルクツォィグ)というWSGIツールキットです。


Flaskのインストールが出来たので、チュートリアルの内容を行います。
http://a2c.bitbucket.org/flask/tutorial/index.html

完全なソースは、下記からダウンロードできるので、まず動作確認からしたい人は、そのソースを基に動作を確認できます。
https://github.com/mitsuhiko/flask/tree/master/examples/flaskr/

ダウンロードしたファイルを解凍して、flaskrフォルダの中に入ります。
まずデータベースの作成と初期化を行います。
(env)$ python
>>> from flaskr import init_db
>>> init_db()
あとは、flaskr.pyを起動すれば、動作確認が出来ます。
(env)$ python flaskr.py
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
http://127.0.0.1:5000/にアクセスをすると、トップページが表示されます。ログインのリンクと、まだ記事が何も無い旨のメッセージが表示されます。


ソースに記載されているログイン情報で、ログインします。


ログインできたメッセージ表示と、タイトルと内容を投稿するフォームが表示されます。


タイトルと内容を記載して、「Share」ボタンを押します。


投稿した記事が表示されます。


ソースの内容については、下記のページにて詳しく説明されています。特に迷うこともなく、分かりやすい説明で、その通り動作しました。
http://a2c.bitbucket.org/flask/tutorial/index.html

Djangoのようなフルスタックのフレームワークではないので、覚えることが少なく、気軽にウェブアプリケーションが作れそうなフレームワークだと思います。

0 件のコメント:

人気の投稿 (過去 30 日間)