flask勉強会その1
Post on 13-May-2015
1.338 Views
Preview:
DESCRIPTION
TRANSCRIPT
PyhonとFlaskで学ぶWEBプログラミング その1
2013/10/09 masato-ka
13年10月14日月曜日
この資料の目的この資料の目的はWEBアプリケーションの初心者に向けて、WEBアプリケーションを実際に作りながら学んでもらうことです。
目標:WEB画面を表示させるPOSTとGETが扱えるようになる。
13年10月14日月曜日
目次
1. WEBアプリケーションてなんぞ?
2.環境を作ろう
3.最初のWEBアプリケーション
4. POSTとGET
13年10月14日月曜日
WEBアプリケーション概要
13年10月14日月曜日
今回の構成Flaskと呼ばれるフレー
ムワークでWEBアプリケーションを作り、簡易なWEBサーバでサービ
スを立ち上げる
今回作るプログラムをApacheとかPython のAPサーバで動かすこともできるけど、まずは範囲
外
13年10月14日月曜日
環境を作ろう!
Windows でPythonを使うための環境を作成します。(別紙資料)
13年10月14日月曜日
最初のWEBアプリケーション
アクセスすると画面を表示するだけのWEBアプリケーションを作ります
13年10月14日月曜日
最初のサンプル
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日月曜日
実行
appフォルダに入り以下のコマンドを実行ブラウザでhttp://loclahost:5000にアクセスしよう
>python hello.py
13年10月14日月曜日
解説
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日月曜日
練習問題
「http://localhost:5000/sample」にアクセスしたときに”ROBOT”と赤字で表示される処理を書きましょう。@app.route("/sample")でルーティングできます。
13年10月14日月曜日
テンプレート複雑な画面や、デザインに凝った画面を作るときにHTMLをプログラム中に書くのは大変。WEB アプリではプログラム実行時にHTMLで書かれたテンプレートファイルをを読み出し、必要な部分を書き換えてクライアントに返す機能が一般的(テンプレートエンジン)
13年10月14日月曜日
テンプレートエンジン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日月曜日
GET と POST
クライアントからの情報を送る方法
GET メソッド 簡単にデータを送れる
POSTメソッド 大量にデータを送れる
13年10月14日月曜日
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日月曜日
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日月曜日
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日月曜日
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日月曜日
今日やったこと
WEBアプリケーション
Flaskフレームワーク
テンプレート
GETとPOST
13年10月14日月曜日
次回予告
ファイルを送るには?
クラスとメソッド
DBアクセス
13年10月14日月曜日
top related