flask勉強会その1

20
PyhonFlaskで学ぶ WEBプログラミング その1 2013/10/09 masato-ka 131014日月曜日

Upload: masato-kawamura

Post on 13-May-2015

1.338 views

Category:

Technology


3 download

DESCRIPTION

Python FlaskでWEBアプリの作り方を学ぶ。 まずは基礎の基礎編から。

TRANSCRIPT

Page 1: Flask勉強会その1

PyhonとFlaskで学ぶWEBプログラミング その1

2013/10/09 masato-ka

13年10月14日月曜日

Page 2: Flask勉強会その1

この資料の目的この資料の目的はWEBアプリケーションの初心者に向けて、WEBアプリケーションを実際に作りながら学んでもらうことです。

目標:WEB画面を表示させるPOSTとGETが扱えるようになる。

13年10月14日月曜日

Page 3: Flask勉強会その1

目次

1. WEBアプリケーションてなんぞ?

2.環境を作ろう

3.最初のWEBアプリケーション

4. POSTとGET

13年10月14日月曜日

Page 4: Flask勉強会その1

WEBアプリケーション概要

13年10月14日月曜日

Page 5: Flask勉強会その1

今回の構成Flaskと呼ばれるフレー

ムワークでWEBアプリケーションを作り、簡易なWEBサーバでサービ

スを立ち上げる

今回作るプログラムをApacheとかPython のAPサーバで動かすこともできるけど、まずは範囲

13年10月14日月曜日

Page 6: Flask勉強会その1

環境を作ろう!

Windows でPythonを使うための環境を作成します。(別紙資料)

13年10月14日月曜日

Page 7: Flask勉強会その1

最初のWEBアプリケーション

アクセスすると画面を表示するだけのWEBアプリケーションを作ります

13年10月14日月曜日

Page 8: Flask勉強会その1

最初のサンプル

from  flask  import  Flaskapp  =  Flask(__name__)

@app.route("/")def  hello():        return  "Hello  World!"

if  __name__  ==  "__main__":        app.run()

hello.py

app

templates

static

webアプリケーションのプログラム本体

テンプレートを入れる(後述)

静的ファイル(JS,CSS)などを入れる

13年10月14日月曜日

Page 9: Flask勉強会その1

実行

appフォルダに入り以下のコマンドを実行ブラウザでhttp://loclahost:5000にアクセスしよう

>python hello.py

13年10月14日月曜日

Page 10: Flask勉強会その1

解説

from  flask  import  Flaskapp  =  Flask(__name__)

@app.route("/")def  hello():        return  "Hello  World!"

if  __name__  ==  "__main__":        app.run()

flaskフレームワークを使う準備

ルートにアクセスする時に実行される処理、ここではクライアントに”Hello World!”を返すだけ

もっと複雑なHTMLを返すにはどうすればいいか?次章で!

13年10月14日月曜日

Page 11: Flask勉強会その1

練習問題

「http://localhost:5000/sample」にアクセスしたときに”ROBOT”と赤字で表示される処理を書きましょう。@app.route("/sample")でルーティングできます。

13年10月14日月曜日

Page 12: Flask勉強会その1

テンプレート複雑な画面や、デザインに凝った画面を作るときにHTMLをプログラム中に書くのは大変。WEB アプリではプログラム実行時にHTMLで書かれたテンプレートファイルをを読み出し、必要な部分を書き換えてクライアントに返す機能が一般的(テンプレートエンジン)

13年10月14日月曜日

Page 13: Flask勉強会その1

テンプレートエンジンfrom  flask  import  Flaskfrom  flask  import  render_templateapp  =  Flask(__name__)

@app.route('/hello)@app.route('/hello/<name>')def  hello_name(name=None):        return  render_template('hello.html',  name=name)

@app.route("/")def  hello():        return  "Hello  World!"

if  __name__  ==  "__main__":        app.run()

hello.py

app

templates

static

hello.html<!doctype  html><title>Hello  from  Flask</title>{%  if  name  %}    <h1>Hello  {{  name  }}!</h1>{%  else  %}    <h1>Hello  World!</h1>{%  endif  %}

13年10月14日月曜日

Page 14: Flask勉強会その1

GET と POST

クライアントからの情報を送る方法

GET メソッド 簡単にデータを送れる

POSTメソッド 大量にデータを送れる

13年10月14日月曜日

Page 15: Flask勉強会その1

GET メソッドhttp://hogehoge/test.cgi?a=alpha&b=beta

GET /cgi-bin/dk2/test.cgi?a=alpha&b=beta HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*Referer: http://127.0.0.1/cgi-bin/test.cgiAccept-Language: ja,en;q=0.5Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)Host: 127.0.0.1Connection: Keep-Alive

13年10月14日月曜日

Page 16: Flask勉強会その1

POSTメソッドhttp://hogehoge/

POST /cgi-bin/test.cgi HTTP/1.1Accept: */*Referer: http://127.0.0.1/cgi-bin/test.cgiAccept-Language: ja,en;q=0.5Content-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)Host: 127.0.0.1Content-Length: 14Connection: Keep-Alive

a=alpha&b=beta

13年10月14日月曜日

Page 17: Flask勉強会その1

GETメソッド演習from  flask  import  Flaskfrom  flask  import  render_template,requestapp  =  Flask(__name__)

@app.route('/test_get',methods=['GET'])def  hello_request():        if  request.method  ==  'GET':                name  =  request.args.get('name')                return  render_template('hello.html',  name=name)

if  __name__  ==  "__main__":        app.run()

get.py

app

templates

static

hello.html<!doctype  html><title>Hello  from  Flask</title>{%  if  name  %}    <h1>Hello  {{  name  }}!</h1>{%  else  %}    <h1>Hello  World!</h1>{%  endif  %}

13年10月14日月曜日

Page 18: Flask勉強会その1

POSTメソッド演習from  flask  import  Flaskfrom  flask  import  render_template,requestapp  =  Flask(__name__)

@app.route('/test_get,['PSOT',  'GET'])def  hello_request():        if  request.method  ==  'GET':                name  =  request.args.get('name',  '')                return  render_template('hello.html',  name=name)        if  request.method  ==  'POST':                name  =  request.form['name']                return  render_template('hello.html',  name=name)

if  __name__  ==  "__main__":        app.run()

get.py

app

templates

static

hello.html<!doctype  html><title>Hello  from  Flask</title>{%  if  name  %}    <h1>Hello  {{  name  }}!</h1>{%  else  %}    <h1>Hello  World!</h1>{%  endif  %}<form  method="POST" ><p><input type="text" name="name"></p><p><input type="submit" value="送信する"></p></form>

13年10月14日月曜日

Page 19: Flask勉強会その1

今日やったこと

WEBアプリケーション

Flaskフレームワーク

テンプレート

GETとPOST

13年10月14日月曜日

Page 20: Flask勉強会その1

次回予告

ファイルを送るには?

クラスとメソッド

DBアクセス

13年10月14日月曜日