Bottle/Pythonによる Webアプリ入門

Slides:



Advertisements
Similar presentations
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
Advertisements

1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
なぜ今Pythonか? Pythonをお薦めする18の理由
JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 /
PHP 文法 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
京都大学情報学研究科 通信情報システム専攻 湯淺研究室 M2 平石 拓
Androidアプリを公開する方法.
情報アプリケーション1 2008年 11月 19日 第二回資料 担当 重定 如彦 .
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
TMenu メニューバーを用いた操作のための コンポーネント.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
最短路問題をGurobiで解こう! 流通最適化工学 補助資料.
Servlet入門(2) 入力フォームをつかったWebアプリ
Lightweight Language Weekend ls-lRシェル
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
VBA H106077 寺沢友宏.
最適化ソルバーのための Python言語入門
PHP 概要 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
ISD実習E 2009年6月1日 read関数 read-macro back-quote 文字列のread 課題
JavaServlet&JSP入門 01K0018 中村太一.
情報理工学部 情報システム工学科 4年 H 亀窪祐太 H 纐纈琢真
Webコミュニケーショングループ ~PHPの基礎~ M1 宮崎 真.
PHP 実用的なサンプル 浅川 和久 2017/3/18 PHP 実用的なサンプル.
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
§3.3 プログラミング 第10回 今日の目標 高級言語のプログラムを実行するまでの過程を示せる インタープリタの仕組みを説明できる
PHP プログラムの実行 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
構造体.
4-3.基本的なPHPスクリプト 2004年6月24日(木) 大北高広 01T6010F.
PHP プログラムの実行 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
フォームからリクエストを受け取る <2/6>
ビューとコントローラ.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
情報アプリケーション1 2008年 12月 3日 第四回資料 担当 重定 如彦 .
HTTPプロトコル J2EE I 第7回 /
ピカチュウによる オブジェクト指向入門 (新版)
JSPの作成 J2EE II 第3回 2005年4月10日.
Servlet入門(2) 入力フォームをつかったWebアプリ
データベース設計 第9回 Webインタフェースの作成(1)
Javaによる Webアプリケーション入門 第5回
情報アプリケーション1 2006年 10月 5日 第三回資料 担当 重定 如彦 .
第8章 Web技術とセキュリティ   岡本 好未.
ネットワークプログラミング論 平成28年11月21日 森田 彦.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
§3.3 プログラミング 第10回 今日の目標 高級言語のプログラムを実行するまでの過程を示せる インタープリタの仕組みを説明できる
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
2018/12/5 ネット商品の管理術 ファイル読み込みの活用.
コンピュータに計算させる命令を確かめよう!
基礎プログラミング演習 第5回 関数とイベントを使ったプログラム.
制作技術ー3 双方向通信 : CGIシステムと環境変数
メタ解法設計者のための Python超入門
情報アプリケーション1 2006年 10月 19日 第四回資料 担当 重定 如彦 .
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
変数,式,関数,クラス,コンストラクタ, クラスの属性アクセス,メソッド,親クラ スからの継承
Javaによる Webアプリケーション入門 第11回
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
基礎プログラミング演習 第12回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
ファイルの読み込み #!/usr/bin/env perl #Perlスクリプトの指定 open(FILE, "food.txt");
統計ソフトウエアRの基礎.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
C#プログラミング実習 第3回.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
ウェブデザイン演習 第6回.
Jakarta Struts (1) ソフトウェア特論 第10回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
君ならどうする – ls-lRシェル Python編
Presentation transcript:

Bottle/Pythonによる Webアプリ入門 東京海洋大学 久保幹雄

from bottle import route, run @route('/hello') def hello(): return "Hello World!" run(host='localhost', port=8080, debug=True) デコレータ(修飾子)@で 関数helloを実行するルートを指定 http://localhost:8080/hello にアクセスするとhelloを実行 ブラウザ  http://localhost:8080/hello Hello World!

名前とパスワードを入力するタグとLoginボタンを配置 クライアントからのデータの受け取り (1) GETモード(既定値)で localhost:8080/login にアクセスすると, username と passward をGETして,フォームにpostする HTMLファイルを返す from bottle import route, request, run, template @route('/login') #@get(‘login’)でもOK def login(): return ''' <form action="/login" method="post"> Username: <input name="username" type="text" /> Password: <input name="password" type="password" /> <input value="Login" name="Login" type="submit" /> </form> ''' Formタグでフォーム を作る.データをフォームにpostする 名前とパスワードを入力するタグとLoginボタンを配置 ブラウザ  http://localhost:8080/login Username Password Login

def check_login(username, password): if username=="kubo": return True クライアントからのデータの受け取り (2) 下で用いる関数 def check_login(username, password): if username=="kubo": return True else: return False POSTモードで localhosr:8080/login にアクセスすると, request.formsからgetメソッドで得られるusernameとpasswordを保管し, check_login関数でcheckして,メッセージを返す. @route(‘/login’, method=‘POST’) #@post(‘login’)でもOK def do_login(): username = request.forms.get('username') password = request.forms.get('password') if check_login(username, password): return "<p>Your login information was correct.</p>" return "<p>Login failed.</p>" Postされたデータ(forms辞書に保管されている)をgetメソッドで受け取る. キーはタグの名前(username, password) パスワードのチェック(ユーザー名がkuboなら真) HTMLのパラグラフのタグ<p>を返す.

ファイルアップロードのときにはenctypeを“multipart/form-data”に設定 ファイルのアップロード法 (1) GETモードで localhost:8080/upload にアクセスすると, username と passward をGETして,フォームにpostするための HTMLファイルを返す. from bottle import route, request, run import os @route('/upload') def upload(): return ''' <form action="/upload" method="post" enctype="multipart/form-data"> Category: <input type="text" name="category" /> Select a file: <input type="file" name="upload" /> <input type="submit" value="Start upload" /> </form> ''' ファイルアップロードのときにはenctypeを“multipart/form-data”に設定 Inputtypeをfileに設定

POSTモードで localhosr:8080/upload にアクセスすると, ファイルのアップロード法 (2) POSTモードで localhosr:8080/upload にアクセスすると, request.formsからgetメソッドで得られるusernameとpasswordを保管し, check_login関数でcheckして,メッセージを返す. filesに保管されたデータ(名前はタグ名のupload)を辞書のようにgetメソッドで得る @route('/upload', method='POST') def do_upload(): category = request.forms.get('category') upload = request.files.get('upload') name, ext = os.path.splitext(upload.filename) if ext not in ('.png','.jpg','.jpeg',".JPG"): return 'File extension not allowed.' save_path = "./" upload.save(save_path) return 'OK' ファイル名をfilename属性で得て画像ファイルでない場合にはメッセージを表示 saveメソッドでファイルを保存する.

template関数にHTMLの文字列(もしくはファイル)を入力すると整形してくれる テンプレートの使用法 @route('/') def do(): name = “Bob” return template( ''' <p>S Hello {{name }} </p> <% for i in range(3): print name, end basket=range(3) %> <ul> % for item in basket: <li>{{item}}</li> % end </ul> ,name=name ) HTMLを記述した文字列 {{ 変数名}}でPythonの変数を代入できる <% %>で囲んだ部分にPythonコードを埋め込める. ただし end が必要! % の右にPythonコードを埋め込める {{ 変数名}}でPythonの変数を代入できる ブラウザ出力Hello Bob ・0 ・1 ・2 名前付き引数としてプログラム内の変数を受け渡し