Soumettre la recherche
Mettre en ligne
Python勉強会資料(MessageBoard作成)
•
2 j'aime
•
9,703 vues
K
Kimihiro N
Suivre
内輪で開催したPython勉強会の資料です。 AppEngine上でDjangoを使ったサンプルとしてMessageBoardを作成してみました。
Lire moins
Lire la suite
Signaler
Partager
Signaler
Partager
1 sur 21
Recommandé
グンマー:未開の地 | 高機能2chまとめアンテナ
グンマー:未開の地 | 高機能2chまとめアンテナ
caput52
軽量のススメ
軽量のススメ
hirokiky
Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
Biblnk
Biblnk
繁史 河久保
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
Shinya Okano
kay-jpmobile
kay-jpmobile
Tasuku Suenaga
Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013
hirokiky
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
Contenu connexe
En vedette
Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27
Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27
Shinichi Nakagawa
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
makoto tsuyuki
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano
Python札幌201406
Python札幌201406
Shinya Okano
Gunma.web #24 MySQL HA
Gunma.web #24 MySQL HA
Yusuke Muraoka
素振りのススメ at Python入門者の集い
素振りのススメ at Python入門者の集い
Takayuki Shimizukawa
Django learning Part2
Django learning Part2
Yusuke Muraoka
価値を届ける技術 #bpstudy 96
価値を届ける技術 #bpstudy 96
hirokiky
ゲームインフラとGoogle Cloud Platformと酒!
ゲームインフラとGoogle Cloud Platformと酒!
Hasegawa Yusuke
Pycon2014 django performance
Pycon2014 django performance
hirokiky
ウマナリティクス#2資料『PAI競馬予測が1番人気に挑む!』
ウマナリティクス#2資料『PAI競馬予測が1番人気に挑む!』
predictori
Django 1.9
Django 1.9
OMEGA (@equal_001)
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
Ian Lewis
AWS Lambda を使ってみた話 at づや会Vol.3
AWS Lambda を使ってみた話 at づや会Vol.3
ko ty
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
Shinichi Nakagawa
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
Akinori Kohno
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
Takayuki Shimizukawa
En vedette
(19)
Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27
Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Python札幌201406
Python札幌201406
Gunma.web #24 MySQL HA
Gunma.web #24 MySQL HA
素振りのススメ at Python入門者の集い
素振りのススメ at Python入門者の集い
Django learning Part2
Django learning Part2
価値を届ける技術 #bpstudy 96
価値を届ける技術 #bpstudy 96
ゲームインフラとGoogle Cloud Platformと酒!
ゲームインフラとGoogle Cloud Platformと酒!
Pycon2014 django performance
Pycon2014 django performance
ウマナリティクス#2資料『PAI競馬予測が1番人気に挑む!』
ウマナリティクス#2資料『PAI競馬予測が1番人気に挑む!』
Django 1.9
Django 1.9
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
AWS Lambda を使ってみた話 at づや会Vol.3
AWS Lambda を使ってみた話 at づや会Vol.3
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
Python勉強会資料(MessageBoard作成)
1.
Django on App
Engine (Message Board)
2.
メッセージボード ログインするとメッセージを書き込める シンプルなWebアプリ
Demo: http://msg.codeflask.appspot.com/
3.
Webアプリ設計 フレームワークの基礎
Djangoテンプレート AppEngineのDB(BigTable(NoSQL)) ページ管理 フォームバリデーション Google OpenID
4.
メッセージ(タイトル、本文)を投稿して見れ るようにする 投稿にはログインが必要
過去のメッセージを遡って見れる 削除・再編集とかはとりあえず付けない ID検索とかもつけない
5.
トップページ: 過去のメッセージが新しい順で3件表示
3件以外はnext, prevボタンでページ移動 メッセージはフル(タイトル・本文・書いた人・日時) で表示 書き込みへのリンクを付ける 書き込みページ 要ログイン タイトル・本文を入力して送信 名前はログインネームから自動で 書き終わるとトップへリダイレクト
6.
(?) IndexView BigTable WriteView • メッセージ取得 • ページ分割 •
レンダリング • リクエスト受け取り • フォーム表示 • フォーム検証 • メッセージ書き込み put fetch
7.
DB なし! NoSQLではテーブルという概念がない PHPの辞書とかに似た形式でデータ保存
柔軟だけど、こういったアプリでは構造化さ れてないので使いづらい → データモデルの定義
8.
Db.Modelを継承したクラスを定義 1インスタンス
≒ 1レコード ユーザー名、タイトル、本文、日付 を定義
9.
URL / トップページ(1ページ目のメッセージ表示)
/{$num} $numページ目のメッセージ表示 /write/ 書き込みフォーム表示
10.
まず表示側(IndexView)から やること:
DBから取得 ページに分割 表示
11.
DB MessageModelにクラスメソッドを追加 日付順で逆ソート
SQLを書く必要なし
12.
3件ごとにページに分けるにはどうすればい いか 3件だけ取得
→ × ページ分割には 前にページが有るか 次にページが有るか 次のページは何ページ目か などといった情報が必要 自分で書くのは面倒臭い →Paginatorの出番
13.
Paginator リストなどを渡すと自動でページ分割し 必要な情報などもセットで提供してくれる p
= Paginator(lists, page_count) p.count #=> 総ページ数 page1 = p.page(1) for item in page1: Print item page1.has_next() #=>次のページが有るか page1.next_page_number() page1.start_index() …
14.
View HTML Source
テンプレートの継承や部分置換などができる 強力なタグ・フィルターが用意されてる 自作タグ・フィルターなども可
15.
WriteView やること OpenID(Google)
フォーム表示 フォーム検証(バリデーション) メッセージ保存
16.
OpenID(Google) user =
users.get_current_user() if not user: return HttpResponseRedirect( users.create_login_url(request.path) ) これだけ。 ログインユーザーを取得 取得できなければログイン画面を作りそこにリダイレクト Create_login_userの引数はログイン後戻ってくる場所。 request.path とすることで今のパスに戻ってこれる
17.
formModel どんなフォームなのかを定義してあげると、 Djangoが勝手にいろいろやってくれる こんなかんじで定義
18.
同じWriteViewで、GETとPOSTの違いによっ て挙動を変える GET:
フォームを表示 POST: DB書き込み。 入力エラーならエラー文付きで再度フォーム表示 form = MessageForm() これでフォーム定義に従ったフォームが作ら れる(便利)
19.
( ) form
= MessageForm(request.POST) if form.is_valid(): # 内容OK フォームの定義を工夫するともっと複雑な チェック可能
20.
https://github.com/pistatium/appengine_bo ard
21.
このメッセージボードの機能拡張 メッセージ削除・再編集
同じUser名のメッセージ抽出