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
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
590
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
100
Is Xcode slowly dying out in 2025?
uetyo
1
280
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
840
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
150
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
770
Goで作る、開発・CI環境
sin392
0
230
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
520
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
290
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Being A Developer After 40
akosma
90
590k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Designing for humans not robots
tammielis
253
25k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Become a Pro
speakerdeck
PRO
29
5.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Docker and Python
trallard
44
3.5k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
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はアプリケーションごとに追加する