albatrosary's blog

UI/UXとエンタープライズシステム

Flask(Python) と AngularJS

Flaskと呼ばれるのWebフレームワークを使ってAngularJSのアプリケーションを開発します。Flaskは、Pythonの軽量Web開発フレームワークです。一から構築するのではなくやはりYEOMANジェネレータを利用します。このエントリーは「AngularJS Advent Calendar 2014」12月21日の記事です(やっと書きました)。

AngularJS Advent Calendar 2014 - Qiita

Flask

先にも述べたとおりFlaskはPythonのマイクロWeb開発フレームワークです。

f:id:albatrosary:20141226142815p:plain

Welcome | Flask (A Python Microframework)

この日本語サイトもあるので是非目を通してください。

Flaskへ ようこそ — Flask v0.5.1 documentation

インストール

generator-angular-flaskをnpmインストールから始めます。YEOMANに関する説明はここでは省略します。

$ npm install -g generator-angular-flask
$ mkdir angular-flask && cd $_
$ yo angular-flask
+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+
|a|n|g|u|l|a|r| |f|l|a|s|k| |g|e|n|e|r|a|t|o|r|
+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+


[?] What is the name of your application? myapp

…

$

ここまで終わったらpythonを使ってツールのインストールを開始します。

$ ./install.sh
New python executable in flask/bin/python
Installing setuptools.............................done.
Installing pip....................

…

$

インストールが完了したら起動します。起動コマンドを実行するとアプリケーションサーバが起動します。画面は次の通り。

$ flask/bin/python run.py

f:id:albatrosary:20141226144516p:plain

画面を追加する

新しく画面を追加します。エンティティを作成しデータベースを生成すれば完了です。

$ yo angular-flask:entity hoge
You called the entity subgenerator with the argument hoge.

Please specify an attribute:
[?] What is the name of the attribute? fuga
[?] What is the type of the attribute? String
[?] Enter the minimum length for the String attribute, or hit enter: 4
[?] Enter the maximum length for the String attribute, or hit enter: 12
[?] Is the attribute required to have a value? Yes
[?] Would you like to enter another attribute or reenter a previous attribute? Yes

Please specify an attribute:
[?] What is the name of the attribute? piyo
[?] What is the type of the attribute? Date
[?] Constrain the date as follows: None
[?] Is the attribute required to have a value? Yes
[?] Would you like to enter another attribute or reenter a previous attribute? (Y/n) n
$ flask/bin/python db_create.py

再び画面を起動します。メニューに「hoge」が追加されてるのがわかります。

$ flask/bin/python run.py

f:id:albatrosary:20141226145142p:plain

hoge 画面を触ってみる

hoge画面を触ってみます。ここまでコーティングせずAngularJSの実装とPythonの実装までされています。

f:id:albatrosary:20141226145227p:plain

f:id:albatrosary:20141226145404p:plain

f:id:albatrosary:20141226145426p:plain

※ 入力桁が大きすぎるとエラーメッセージが表示されます

f:id:albatrosary:20141226145414p:plain

※ 入力桁が小さいとエラーメッセージが表示されます

f:id:albatrosary:20141226145438p:plain

※ 日付入力ではカレンダーが表示されます

f:id:albatrosary:20141226145502p:plain

f:id:albatrosary:20141226145513p:plain

※ データが入力された状態です

最後に

AngularJS + Python のフルスタックWebアプリケーションをご紹介しました。YEOMANではこれ以外にも・・・AngularJS Advent Calendarでした。そっそいうことです。