Flask勉強会その1

2,339 views
2,136 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,339
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Flask勉強会その1

  1. 1. PyhonとFlaskで学ぶ WEBプログラミング その1 2013/10/09 masato-ka 13年10月14日月曜日
  2. 2. この資料の目的 この資料の目的はWEBアプリケー ションの初心者に向けて、WEBアプ リケーションを実際に作りながら学 んでもらうことです。 目標:WEB画面を表示させるPOSTと GETが扱えるようになる。 13年10月14日月曜日
  3. 3. 目次 1. WEBアプリケーションてなんぞ? 2. 環境を作ろう 3. 最初のWEBアプリケーション 4. POSTとGET 13年10月14日月曜日
  4. 4. WEBアプリケーション概要 13年10月14日月曜日
  5. 5. 今回の構成 Flaskと呼ばれるフレー ムワークでWEBアプリケーション を作り、簡易なWEBサーバでサービ スを立ち上げる 今回作るプログラムを ApacheとかPython のAPサーバで動 かすこともできるけど、まずは範囲 外 13年10月14日月曜日
  6. 6. 環境を作ろう! Windows でPythonを使うための環境 を作成します。(別紙資料) 13年10月14日月曜日
  7. 7. 最初のWEBアプリケーション アクセスすると画面を表示するだけ のWEBアプリケーションを作ります 13年10月14日月曜日
  8. 8. 最初のサンプル webアプリケーションの app プログラム本体 hello.py from  flask  import  Flask app  =  Flask(__name__) @app.route("/") def  hello():        return  "Hello  World!" if  __name__  ==  "__main__":        app.run() templates テンプレートを入れる (後述) static 静的ファイル(JS,CSS) などを入れる 13年10月14日月曜日
  9. 9. 実行 appフォルダに入り以下のコマンドを 実行ブラウザでhttp:/ /loclahost:5000 にアクセスしよう >python hello.py 13年10月14日月曜日
  10. 10. 解説 flaskフレームワークを使う準備 from  flask  import  Flask app  =  Flask(__name__) @app.route("/") def  hello():        return  "Hello  World!" ルートにアクセスする時に実行 される処理、ここではクライア if  __name__  ==  "__main__":        app.run() ントに”Hello World!”を返すだけ もっと複雑なHTMLを返すにはどうすればいいか? 次章で! 13年10月14日月曜日
  11. 11. 練習問題 「http:/ /localhost:5000/sample」にア クセスしたときに”ROBOT”と赤字で 表示される処理を書きましょう。 @app.route("/sample")でルーティングできます。 13年10月14日月曜日
  12. 12. テンプレート 複雑な画面や、デザインに凝った画面を 作るときにHTMLをプログラム中に書く のは大変。WEB アプリではプログラム 実行時にHTMLで書かれたテンプレート ファイルをを読み出し、必要な部分を書 き換えてクライアントに返す機能が一般 的(テンプレートエンジン) 13年10月14日月曜日
  13. 13. テンプレートエンジン from  flask  import  Flask from  flask  import  render_template app app  =  Flask(__name__) hello.py @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() templates hello.html static 13年10月14日月曜日 <!doctype  html> <title>Hello  from  Flask</title> {%  if  name  %}    <h1>Hello  {{  name  }}!</h1> {%  else  %}    <h1>Hello  World!</h1> {%  endif  %}
  14. 14. GET と POST クライアントからの情報を送る方法 GET メソッド 簡単にデータを送れる POSTメソッド 大量にデータを送れ る 13年10月14日月曜日
  15. 15. GET メソッド http:/ /hogehoge/test.cgi?a=alpha&b=beta GET /cgi-bin/dk2/test.cgi?a=alpha&b=beta HTTP/ 1.1 Accept: image/gif, image/x-xbitmap, image/ jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */* Referer: http://127.0.0.1/cgi-bin/test.cgi Accept-Language: ja,en;q=0.5 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Host: 127.0.0.1 Connection: Keep-Alive 13年10月14日月曜日
  16. 16. POSTメソッド http:/ /hogehoge/ POST /cgi-bin/test.cgi HTTP/1.1 Accept: */* Referer: http://127.0.0.1/cgi-bin/test.cgi Accept-Language: ja,en;q=0.5 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Host: 127.0.0.1 Content-Length: 14 Connection: Keep-Alive a=alpha&b=beta 13年10月14日月曜日
  17. 17. GETメソッド演習 from  flask  import  Flask app from  flask  import  render_template,request app  =  Flask(__name__) get.py @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() templates hello.html static 13年10月14日月曜日 <!doctype  html> <title>Hello  from  Flask</title> {%  if  name  %}    <h1>Hello  {{  name  }}!</h1> {%  else  %}    <h1>Hello  World!</h1> {%  endif  %}
  18. 18. POSTメソッド演習 from  flask  import  Flask from  flask  import  render_template,request app app  =  Flask(__name__) get.py @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() templates hello.html static 13年10月14日月曜日 <!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>
  19. 19. 今日やったこと WEBアプリケーション Flaskフレームワーク テンプレート GETとPOST 13年10月14日月曜日
  20. 20. 次回予告 ファイルを送るには? クラスとメソッド DBアクセス 13年10月14日月曜日

×