pythonによるwebアプリケーション入門 - django編-

44
Pythonによる Webアプリケーション入門 Django編~ 2015/12/09 関根裕紀 みんなのPython勉強会#7

Upload: hironori-sekine

Post on 07-Jan-2017

11.388 views

Category:

Technology


0 download

TRANSCRIPT

Pythonによる Webアプリケーション入門 ~Django編~

2015/12/09 関根裕紀

みんなのPython勉強会#7

自己紹介

• 関根裕紀(せきね ひろのり)

• 株式会社SQUEEZE

• Twitter: @checkpoint

業務でのPython

• ホームシェア(民泊)などの物件の管理、またそれに伴う各種オペレーションを一元的に管理するクラウドサービス を提供(Mister

Suite)

• 実際の業務でDjango、Scrapyを使用

• エンジニア積極採用中!

Pythonとの関わり(1)• PyCon JP 2014 スタッフ

• PyCon JP 2015 プログラムチーム副座長

• Pythonもくもく会(主催)

Pythonとの関わり(2)

• LLDiver

• PyCon JP 2014

• Phone Symposium Tokyo 2015

• PyCon mini Hiroshima

• みんなのPython勉強会#7(Today!!)

• Pythonエンジニア養成読本(共著)

アジェンダ

• PythonでのWebアプリケーション開発

• Djangoの概要

• デモ(管理サイト、アプリケーション)

本日伝えたい事

• Djangoでの開発イメージ

• モデル、ビュー、テンプレート

• Admin機能便利!

Webアプリケーションとは?

Webアプリケーションとは、Webサーバー上で動作し、Webブラウザを用いて利用するアプリケーションのことである。 WebアプリケーションはWebブラウザをクライアントとし、HTTPを通じてWebサーバーにアクセスして利用される。

( www.weblio.jp/content/ウェブアプリケーション ) IT用語辞典より

Pythonでの選択肢

• CGI

• WSGI

• Webアプリケーションフレームワーク

WSGIとは?

• Webサーバーとアプリケーションの共通のインターフェース仕様

• Java Servlet APIのようなもの

• PEP333, PEP 3333

• 標準ライブラリにwsgiref がある

Webアプリケーションは複雑

• DBアクセス

• テンプレート描画

• ルーティング

• フォーム処理

• ファイルアップロード

• セッション管理

• セキュリティ

• etc…

Webアプリケーションフレームワーク

• Webアプリの開発に必要な機能を提供

• 処理の流れをフレームワーク側で制御

• 開発者は必要な部分のみを開発

• 枠組みに乗る

• クラスを作る

• テンプレートを書く

クラス

テンプレート

PythonのWebフレームワーク

• Pyramid

• Tornado

• Flask

• Bottle

Pyramid

• 小さく、早く、堅実なフレームワーク

• すべての機能をフレームワーク側で用意しない

• サードパーティ製のライブラリと組み合わせて使用する

Tornado

• FriendFeed(現Facebook)が開発

• 非同期のネットワークI/Oライブラリ

• シンプルで高速なのが特徴

• 大規模な事例

Flask

• 軽量なアプリケーションフレームワーク

• Werkzeug (WSGI utility library)

• Jinja2 (Template Engine)

Bottle

• 軽量なアプリケーションフレームワーク

• 一つのPythonファイルで提供

• フレームワークの学習にも最適

• 詳細はPythonエンジニア養成読本を

Django

• フルスタックのフレームワーク

• 最新バージョンは1.9

• ドキュメント、テストが充実

• コミュニティが活発

• 大規模な事例

Djangoが提供する機能• モデル

• ビュー

• テンプレート

• フォーム

• 管理サイト

• セキュリティ

• 国際化

• ユーザー認証

• その他

Djangoでの開発の流れ

• プロジェクトの作成

• アプリケーションの作成

• 初期設定 (settings.py)

• モデルの作成

• ビューの作成

• テンプレートの作成

• ルーティングの定義

djangoのインストール

プロジェクトの作成

アプリケーションの作成

HelloWorld

開発サーバーの起動

サンプル紹介• ブログ管理アプリケーション

• ブログ

• 投稿

• 管理サイト

• Github(サンプルソース)

• https://github.com/checkpoint/django_sample

最終的なイメージ

管理サイトの流れ

• モデルの作成

• 管理画面の定義

モデルの定義ユーザ

タイトル

本文

作成日時

更新日時

モデルの定義ブログ

タイトル

本文

カテゴリ

下書き

公開日時

作成日時

更新日時

マイグレーション

管理サイトの設定

管理サイトデモ

アプリケーションの流れ

ブラウザ

ビュー (コントローラー)

モデル (DBアクセス)

テンプレート (画面の表示)

アプリケーション作成の流れ

• モデルの作成

• フォームの作成

• ビューの作成

• テンプレートの作成

• ルーティングの定義

作成サイトデモ

便利なライブラリ

• django-debug-toolbar

• Django REST framework

おすすめサイト

• https://www.djangoproject.com/

• https://www.djangopackages.com/

• http://qiita.com/kaki_k/items/511611cadac1d0c69c54

おすすめコミュニティ

• Python mini Hack-a-thon

• TokyoDjangoMeetup

• Pythonもくもく会

まとめ

• Djangoでの開発イメージ

• Admin機能便利!

• モデル、ビュー、テンプレート

参考資料

• https://www.djangoproject.com/

• https://www.python.org/dev/peps/pep-0333/

• https://www.python.org/dev/peps/pep-3333/

• http://gihyo.jp/dev/feature/01/wsgi

宣伝

• PyCon JP 2016

• スタッフ募集中

• 株式会社 SQUEEZE

• エンジニア募集中!

ご静聴ありがとうございました