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
99
django入門
naoki-urabe
April 16, 2022
Tweet
Share
More Decks by naoki-urabe
See All by naoki-urabe
無駄課金回避__lambdaでEC2定期シャットダウン.pdf
naokiurabe
0
230
DevOps勉強会資料
naokiurabe
0
150
django入門2
naokiurabe
0
72
Other Decks in Programming
See All in Programming
Swift Updates - Learn Languages 2025
koher
2
470
旅行プランAIエージェント開発の裏側
ippo012
2
890
個人軟體時代
ethanhuang13
0
320
ProxyによるWindow間RPC機構の構築
syumai
3
1.2k
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
210
Laravel Boost 超入門
fire_arlo
2
210
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
130
Deep Dive into Kotlin Flow
jmatsu
1
310
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
RDoc meets YARD
okuramasafumi
4
170
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
100
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
A designer walks into a library…
pauljervisheath
207
24k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Code Review Best Practice
trishagee
70
19k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Making Projects Easy
brettharned
117
6.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
What's in a price? How to price your products and services
michaelherold
246
12k
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はアプリケーションごとに追加する