Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
django入門
Search
naoki-urabe
April 16, 2022
Programming
0
65
django入門
naoki-urabe
April 16, 2022
Tweet
Share
More Decks by naoki-urabe
See All by naoki-urabe
無駄課金回避__lambdaでEC2定期シャットダウン.pdf
naokiurabe
0
200
DevOps勉強会資料
naokiurabe
0
130
django入門2
naokiurabe
0
55
Other Decks in Programming
See All in Programming
What We Can Learn From OSS
inouehi
0
440
Milestoner
bkuhlmann
1
410
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
170
CDKコントリビュートの最初の壁を越えよう! -簡単issueの見つけ方-
badmintoncryer
3
210
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
4
1k
スキーマ駆動開発による品質とスピードの両立 - 私達は何故、スキーマを書くのか
kentaroutakeda
0
180
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
220
Goのmultiple errorsについて (2024年4月版)
syumai
4
1.2k
禅の心を手に入れよ
eltociear
1
330
dbtのドメイン分割による データ基盤の改善とDigdagとの連携
sakama
0
440
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.9k
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
420
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
22
1.6k
Product Roadmaps are Hard
iamctodd
45
9.7k
Designing the Hi-DPI Web
ddemaree
276
33k
Optimizing for Happiness
mojombo
370
69k
Typedesign – Prime Four
hannesfritz
36
2.1k
Designing for Performance
lara
601
67k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
79
43k
Why Our Code Smells
bkeepers
PRO
331
56k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
Writing Fast Ruby
sferik
622
60k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
245
20k
Transcript
Django入門
Djangoとは? • pythonベースのwebフレームワーク • 中規模〜大規模のアプリケーション開発が得意 • Djangoのメリット − セキュリティに強い −
データベース構築が簡単
MTVモデル • DjangoはMTVモデルを採用している − MCVのVをTemplateとViewに明確に分けている • Model データを保持する • Template
表示する画面 • View リクエストオブジェクトを受取、レスポンスオ ブジェクトを生成し返す
Model • Django ORM(Object Relational Mapper)を提供 している • データベースのテーブル・カラムとモデルのクラスと フィールドを対応付け、レコード1件毎にオブジェク
トとして扱えるようにしている クラス フィールド データベース テーブル カラム
View • リクエストオブジェクトを受取、レスポンスオブジェク トを生成し返す • ビジネスロジックを実行し、テンプレートに表示する 変数を用意する func(1) func(2) Context
= { Name: test Age: 10 } Template
Template • DTL(Django Template Language)を提供している • Htmlに変数表示やロジックを埋め込むことができ る {{ variable
}} 変数表示 {% if is_active %} 条件分岐 Hello {% endif %} {% for item in items %} 反復 {{ item.value }} {% endfor %}
MVCのCは? • URLディスパッチャがControllerの役目 • リクエストとして送られたURLを識別し適切なview 関数へ渡す URLConf URLディスパッチャ / /manage_employ
ee /login リクエスト
Djangoの処理の流れ Url:http:1337/test URLディス パッチャ View Model データベース レスポンス 適切なView関数に リクエストを渡す
Url:http:1337/test Url:http:1337/test データベースから情報を取得 レスポンスを生成し返 す データベース操 作
実際に作ってみよう 従業員情報を出力するアプリを作ってみる https://github.com/naoki-urabe/django-app django-appというフォルダを作り、そこで作成していく
Dockerで環境構築
Docker-composeを利用する
環境変数分離 • 秘密鍵情報等は.envファイルに分けたほうが良い
環境変数分離 • 秘密鍵情報等は.envファイルに分けたほうが良い
Djangoプロジェクト作成 • プロジェクトの作成コマンドによってプロジェクトを 作成
docker-composeでコンテナ立ち上げ • Localhost:8000を開く • ロケットの画面が出れば成功
URL設定 • URLConfに該当 • プロジェクトのURL.pyにURLパターンを設定する • 上の例では /にアクセスした際、 manage_employee.urlを見に行く
アプリケーションを作成 • djangoではアプリケーションという小さいサービス を連携させ全体のアプリケーションを構築している • 上記コマンドを打つことでアプリケーションのフォル ダができる
Urls.py • URLConfに該当 • アプリケーションごとにUrls.pyを作成する • プロジェクトのUrl.pyを複雑化させないため
Model定義 • テーブル・カラムの定義を行う • データベースに保存される形式を定義している
migration • Model定義の新規作成・変更の場合はデータベー スに対し変更(migration)を行わなければならない • migrationの実行はmakemakegrationsコマンド migrateコマンド
Viewの設定 • リクエストを受取り、ビジネスロジックを実行し、レス ポンス生成して返す
Templateの設定 • Viewから渡された変数を表示する
表示画面 • 従業員名・年齢が表示されれば成功
ポイント • DjangoはMTVモデルを採用している − Model Django ORMマッパー − T Django
Template Engine − V リクエストを受取、レスポンスを返す − MCVのCに当たるのはURLディスパッチャ • 開発時 − 秘密鍵等は.envファイルに分割する − モデルを追加変更した際はmigrationする − URL.pyはアプリケーションごとに追加する