Submit Search
Upload
20190809
•
Download as PPTX, PDF
•
0 likes
•
125 views
iPride Co., Ltd.
Follow
2019/08/08の勉強会で発表されたものです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 29
Download now
Recommended
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
Phpcon2001 in tokyo
Phpcon2001 in tokyo
Hideo Kashioka
FuelPHPをさわってみて
FuelPHPをさわってみて
Sotaro Omura
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
CodeIgniter入門
CodeIgniter入門
Sho A
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
kenjis
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
はじめての FuelPHP
はじめての FuelPHP
Sho A
Recommended
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
Phpcon2001 in tokyo
Phpcon2001 in tokyo
Hideo Kashioka
FuelPHPをさわってみて
FuelPHPをさわってみて
Sotaro Omura
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
CodeIgniter入門
CodeIgniter入門
Sho A
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
kenjis
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
はじめての FuelPHP
はじめての FuelPHP
Sho A
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
Naoto Mawatari
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Weeklycms20120218
Weeklycms20120218
Yoshi Sakai
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
PHP勉強会 #51
PHP勉強会 #51
Takako Miyagawa
PHPの今とこれから2021
PHPの今とこれから2021
Rui Hirokawa
HHVM Hack
HHVM Hack
Masaaki Yonebayashi
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Junichi Yamamoto
Osc2014
Osc2014
Soudai Sone
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)
hajikami
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
kenjis
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
More Related Content
What's hot
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
Naoto Mawatari
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Weeklycms20120218
Weeklycms20120218
Yoshi Sakai
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
PHP勉強会 #51
PHP勉強会 #51
Takako Miyagawa
PHPの今とこれから2021
PHPの今とこれから2021
Rui Hirokawa
HHVM Hack
HHVM Hack
Masaaki Yonebayashi
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Junichi Yamamoto
Osc2014
Osc2014
Soudai Sone
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)
hajikami
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
kenjis
What's hot
(20)
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
Weeklycms20120218
Weeklycms20120218
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
Fuel php osc tokyo2012
Fuel php osc tokyo2012
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
PHP勉強会 #51
PHP勉強会 #51
PHPの今とこれから2021
PHPの今とこれから2021
HHVM Hack
HHVM Hack
第21回Creators MeetUp
第21回Creators MeetUp
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Osc2014
Osc2014
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
Similar to 20190809
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
WebAPIではじめるphp入門
WebAPIではじめるphp入門
Hiroaki Murayama
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
Teclab3
Teclab3
Eikichi Yamaguchi
Silex入門
Silex入門
Takuya Sato
Php in ruby
Php in ruby
do_aki
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
Cakephp tokyo5
Cakephp tokyo5
ichikaway
Pyramid入門
Pyramid入門
Atsushi Odagiri
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
Phpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakada
Junpei Nakada
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
Flask勉強会その1
Flask勉強会その1
Masato Kawamura
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
kimukou_26 Kimukou
Data APIの基本
Data APIの基本
Hajime Fujimoto
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
Similar to 20190809
(20)
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
WebAPIではじめるphp入門
WebAPIではじめるphp入門
URLで遊ぼう
URLで遊ぼう
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Teclab3
Teclab3
Silex入門
Silex入門
Php in ruby
Php in ruby
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Cakephp tokyo5
Cakephp tokyo5
Pyramid入門
Pyramid入門
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Phpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakada
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Struts2を始めよう!
Struts2を始めよう!
Flask勉強会その1
Flask勉強会その1
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
Data APIの基本
Data APIの基本
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
More from iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
iPride Co., Ltd.
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
iPride Co., Ltd.
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
iPride Co., Ltd.
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
iPride Co., Ltd.
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
iPride Co., Ltd.
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
iPride Co., Ltd.
OpenID Connectについて
OpenID Connectについて
iPride Co., Ltd.
画像生成AIの問題点
画像生成AIの問題点
iPride Co., Ltd.
AI入門
AI入門
iPride Co., Ltd.
More from iPride Co., Ltd.
(20)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
OpenID Connectについて
OpenID Connectについて
画像生成AIの問題点
画像生成AIの問題点
AI入門
AI入門
Recently uploaded
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Recently uploaded
(7)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
20190809
1.
Flaskで始める webアプリ開発 2019/08/09 ふみたろう
2.
目次 • Flaskとは • Flaskのインストール •
Hello worldまで • 任意のHTMLを 表示させたい • ルートに パラメータを持たせたい • CSSやJavaScriptを 読み込ませたい • PythonからHTMLに 引数を渡したい • formでの受け渡し • ルートに 階層を持たせたい • まとめ • 参考資料
3.
Flaskとは • Pythonのウェブアプリケーションフレームワーク • 軽量で必要最低限の機能を搭載 →
URLルーティング、テンプレート等のwebの基本は持っている → 学習コストが低い • つまり、Flaskは簡単なREST APIの作成に適してい る
4.
Flaskのインストール • $ pip
install flask • これだけ ※ インストールされたpythonバージョンによって pip3だったりする(IDEをインストールしよう) ※ Flask使用時は、 ファイル名に「flask.py」は使わないようにする
5.
Hello worldまで 〜雛形コード〜 hello.py ~ ~
~ ~ ~ from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello world" if __name__ == '__main__': app.debug = True app.run() ~ ~ ~ ~ ~ $ python hello.py
6.
Hello worldまで ~解説(前半)~ from flask
import Flask • Flaskパッケージのインポート app = Flask(__name__) • Flaskクラスのインスタンスを作ってappに代入 • __name__はPythonの特殊なグローバル変数の一つ → どこから呼ばれて実行されるかを格納している変数 → インポートからではモジュール名(今回はhello) → コマンドラインからでは__main__という文字列 → 値はpythonによって自動的に定義される
7.
Hello worldまで ~解説(後半)~ @app.route('/') • 指定したエンドポイントにアクセスした際、このアノテーションが付けられた関数を呼び出す def
index(): return "Hello world" if __name__ == '__main__': app.debug = True app.run() • Flaskアプリケーションの実行部分 • 今回はスクリプトを実行してコマンドラインから呼ばれるため、__name__は__main__になる • app.debug = Trueにすることにより、コードを修正&保存するだけで再実行してくれる ↑ おすすめ ただし、毎回ファイルを探すため、対話モードで開発する場合はFalse推奨 • app.run()でFlaskアプリケーションの実行を定義している
8.
Hello worldまで ~再掲~ hello.py ~ ~
~ ~ ~ from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello world" if __name__ == '__main__': app.debug = True app.run() ~ ~ ~ ~ ~ $ python hello.py
9.
任意のHTMLを表示させたい from flask import
Flask, render_template # ← render_templateを追加 app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') # ← 任意のHTMLを記述 if __name__ == '__main__': app.debug = True app.run() ※HTMLファイルはtemplatesディレクトリ内に置く必要がある それ以外の名前にしたり、プロジェクト直下に置いたりすると、例外を返す jinja2.exceptions.TemplateNotFound
10.
ルートにパラメータを持たせた い @app.route("/<name>") # ←
<>内にパラメータ変数を記述 def hello_name(name): return "Hello {}".format(name)
11.
CSSやJavaScriptを読み込ませたい • html内で{{url_for()}}を使って読み込み先を指定する <head> <link rel="stylesheet"
href="{{url_for('static', filename='index.css')}}"> <script src="{{url_for('static', filename='index.js')}}"></script> </head> ※css、jsファイルはstaticディレクトリ内に置く必要がある それ以外から呼び出そうとするとエラーを返す werkzeug.routing.BuildError
12.
pythonからHTMLに引数を渡したい 〜テンプレートエンジン〜 • FlaskではテンプレートエンジンのJinja2を利用することができる • Jinja2とは •
Python用のテンプレート言語 • Djangoというテンプレートエンジンを模している • $ pip install Jinja2でインストール(IDEをインs…) • ちなみに名前の由来[1]は、 テンプレート→テンプル→寺→神社(日本の寺)→Jinja と、発音が似ているからだそうだ (公式さん…「神社」と「日本の寺」は違うのでは…) [ 公式ドキュメント参照
13.
PythonからHTMLに引数を渡したい ~Python側~ @app.route('/temp') def temp(): s =
"abc" lis = ["a1", "a2", "a3"] dic = {"name": "John", "age": 24} bl = True return render_template('temp.html', s=s, lis=lis, dic=dic, bl=bl) • python側では、render_templateの第2引数以降に渡す値を指定 • HTML側の変数=python側の変数
14.
PythonからHTMLに引数を渡したい ~HTML側~ <body> <p>{{ s }}</p> <ul> {%
for x in lis %} <li>{{ x }}</li> {% endfor %} </ul> <p>{{ "name: %s age: %s" % (dic["name"], dic["age"]) }}</p> {% if bl %} <p>True</p> {% else %} <p>False</p> {% endif %} </body> • HTML側では、Jinja2に則した方式で引数の受け取り口を作成
15.
formでの受け渡し ~Python側~ @app.route('/form') def form(): return render_template('form.html') @app.route('/form_result',
methods=['GET', 'POST']) def form_result(): if request.method == 'GET': res = request.args.get('get_value') + " from get" elif request.method == 'POST': res = request.form['post_value'] + " from post" return res • リクエストメソッドを記述する 例えば、GETだけならmethods=['GET']のみ なにも記述しない場合はデフォルトでGETリクエストがルーティングされる • 値を取得する場合は GETではrequest.args.get()関数 POSTではrequest.form[]関数
16.
formでの受け渡し ~テンプレート側~ <form action="/form_result" method="get"> <input
type="text" name="get_value" /> <button name="get_value">get submit</button> </form> <form action="/form_result" method="post"> <input type="text" name="post_value" /> <button name="post_value">post submit</button> </form> • formの書き方はHTMLリファレンスに準拠する • action属性にはリクエストの送信先エンドポイント • method属性にはリクエストメソッド
17.
ルートに階層を持たせたい • Flaskでは機能を分割して実装することが可能な Blueprintというパッケージがある • Blueprintを利用することで 機能の管理やメンテナンスが容易になる →
アプリ全体の管理ファイル → それと分割させたそれぞれの機能ファイル
18.
ルートに階層を持たせたい ~管理ファイル作成手順~ 1. 機能ファイルをインポート 2. 分割先のBlueprintオブジェクトを登録
19.
ルートに階層を持たせたい ~機能ファイル作成手順~ 1. フォルダを作成、そこで機能ファイルを作成 2. Blueprintをインポート 3.
Blueprintオブジェクトを作成(以下の設定を含める) • Blueprintオブジェクト名 • __name__(いつもの) • 分割エンドポイントの指定 • テンプレート操作パスの指定 ↑ 今回は使わないが、デフォルトのテンプレートフォルダから変更が可能 4. 通常通りにルーティング設定+処理
20.
ルートに階層を持たせたい ~階層構造~ • 今回は以下のような階層構造で試した http://127.0.0.1:5000/ /api /func1 /func2
21.
ルートに階層を持たせたい 〜管理ファイル〜 server.py ~ ~ ~
~ ~ from flask import Flask from apps import root from apps import api from apps import func1 from apps import func2 app = Flask(__name__) # Blueprintを登録する app.register_blueprint(root.app) # / app.register_blueprint(api.app) # /api app.register_blueprint(func1.app) # /api/func1 app.register_blueprint(func2.app) # /api/func2 if __name__ == "__main__": app.debug = True app.run()
22.
ルートに階層を持たせたい ~/~ root.py ~ ~ ~
~ ~ from flask import render_template, Blueprint # 'root'という名前のBlueprintオブジェクトを生成 # "/"には分割エンドポイントの設定はしない app = Blueprint('root', __name__) # 以下「いつもの」 @app.route("/") def root(): return render_template('root.html')
23.
ルートに階層を持たせたい ~/api~ api.py ~ ~ ~
~ ~ from flask import render_template, Blueprint # 'api'という名前のBlueprintオブジェクトを生成 app = Blueprint('api', __name__) # 以下「いつもの」のエンドポイントについて、"/api"の後ろにまだ続くので、末尾に/を入れる @app.route("/api/") def root(): return render_template('api.html')
24.
ルートに階層を持たせたい ~/func1 /func2~ func1.py(func2は割愛) ~ ~
~ ~ ~ from flask import render_template, Blueprint # 'func1'という名前のBlueprintオブジェクトを生成 # "/func1"では'/api'の上に置くため分割エンドポイントを指定 app = Blueprint('func1', __name__, url_prefix='/api') # 以下「いつもの」 @app.route("/func1") def hello(): return render_template('func1.html')
25.
ルートに階層を持たせたい ~HTML表記 上から下~ rootからapi <a href="./api">rootからapi</a> <a
href="/api">rootからapi</a> apiからfunc1 <a href="./func1">apiからfunc1</a> <a href="/api/func1">apiからfunc1</a> rootからfunc1 <a href="./api/func1">rootからfunc1</a> <a href="/api/func1">rootからfunc1</a> func1からfunc2 <a href="./func2">func1からfunc2</a> <a href="/api/func2">func1からfunc2</a>
26.
ルートに階層を持たせたい ~HTML表記 下から上~ func1からapi <a href="./">func1からapi</a> <a
href="/api">func1からapi</a> apiからroot <a href="/">apiからroot</a> ❌<a href="./">apiからroot</a>はできない → "/"と同じ階層エンドポイントへの遷移では相対パスが使えない func1からroot <a href="../">func1からroot</a> <a href="/">func1からroot</a>
27.
まとめ • FlaskはPythonのWebフレームワークであり、 軽量なので簡単なREST APIの作成に適切 •
テンプレートエンジン(jinja2)を利用すると、 PythonとHTML間で値の受け渡しが容易 • 神社 = 寺 • Blueprintで階層構造化&メンテナンス性向上
28.
参考資料 • Frequently Asked
Questions — Jinja Documentation (2.10.x) • Flask を始めよう — Flask Handson 1 documentation.mhtml • [Python] Flask 入門 - ゾンビでもわかるPythonプログラミン グ • 【Flask入門】Python初心者でもわかるフレームワーク…| Udemy メディア • Flask入門 - Python学習講座
29.
ご清聴 ありがとうございました
Download now