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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
cuzzuky87
December 20, 2019
Programming
21
0
Share
Djangoハンズオン
Python製ウェブフレームワークDjangoの簡単なハンズオンです。
認証機能のないTodoアプリを作成し、CRUD実装の流れを理解してもらいます
cuzzuky87
December 20, 2019
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
4
260
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.3k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
2
410
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
210
RTSPクライアントを自作してみた話
simotin13
0
420
dRuby over BLE
makicamel
2
290
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
7
1.3k
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
780
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
5
1k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
240
ふつうのFeature Flag実践入門
irof
7
3.5k
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
5.2k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
320
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
A designer walks into a library…
pauljervisheath
211
24k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Docker and Python
trallard
47
3.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
590
Visualization
eitanlees
152
17k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
380
Abbi's Birthday
coloredviolet
2
7.8k
The Curious Case for Waylosing
cassininazir
1
370
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Transcript
Djangoハンズオン#1 Kazuki Y(cuz)
お前誰よ? 名前 :Kazuki. Y (@cuz_t3ch) 仕事 :SE(Fortran,VBA,C#)兼流体解析 Python歴 :1年強?主にDjangoとか数値データの処理に使っています 「大阪Pythonの会」の運営のお手伝い
皆さんの心の声「ちょっとまって?実務で Django使ってないの?大丈夫?」 マサカリ大歓迎です、逆にご指導いただきたいくらいです 至らぬ点があるかと思いますが、精一杯がんばります これをきっかけに私より強強になって教えてください!
Agenda 1. Djangoの基本的な流れ 2. 環境構築 3. ハンズオン(CRUDの実装) 4. 次のステップ
Agenda 1. Djangoの基本的な流れ 2. 環境構築 3. ハンズオン(CRUDの実装) 4. 次のステップ
Djangoの処理の流れ(MVTモデル) クライアント ①リクエスト http://****/list URL path(‘list’,hoge…) http://****/list View ②URLとViewを対応 ③TemplateにModelを
レンダリング Template Model ④レスポンス ※Djangoの中は簡略化しています。
ディレクトリ構成 プロジェクト全体の設定 プロジェクトの管理 アプリ
URLconf • urlの’/’より後ろの文字列を設定します • urlpatternsという変数にpathを登録していきます。 • path関数の内訳は”URL文字列,対応するビュー関数,urlの名前” • プロジェクト全体のurls.pyとは別にアプリ側にurls.pyを作成し、includeすることが 多いです
ビュー • DBからデータを取り出し、テンプレートにレンダリングします ◦ DBからの取り出しにはobjects.all()などでデータを取り出します ◦ render関数などでtemplateとDBから取り出したデータをレンダリングし、レスポンスを返します • 関数ベースのView、クラスベースのViewがあります
テンプレート • htmlファイルの中にdjango特有の表現が含まれています。 • {%...%} : for文,if文などの制御文の記述、若干Pythonと違います • {{ … }}
: データへのアクセス
Agenda 1. Djangoの基本的な流れ 2. 環境構築 3. ハンズオン(CRUDの実装) 4. 次のステップ
プロジェクトの作成 これに備えて書いた記事がありますhttps://qiita.com/cuz/private/bee679dc426b690d2fe3 一応一緒にやっていきましょう
Agenda 1. Djangoの基本的な流れ 2. 環境構築 3. ハンズオン(CRUDの実装) 4. 次のステップ
今回のハンズオンについて • 今回は見た目・機能がかなり残念なTodoアプリを作成します • 設計は適当です • 実装の順番 ◦ モデル ◦
ビュー ◦ テンプレート ◦ ルーティング
事前準備(アプリの作成〜settings.pyの編集) 先程作成したディレクトリの中で、以下のコマンドを打ちます コマンド:django-admin startapp mytodo settings.pyは以下の点を編集します • INSTALLED_APPS • LANGUAGE_CODE
• TIME_ZONE • TEMPLATES
settings.py 先程作成したアプリをDjangoに登録します
settings.py タイムゾーンと言語の設定 テンプレートの場所を登録・作成 manage.pyの階層にtemplatesフォルダを 作成します
モデルの実装 • DBのテーブルとクラスが対応します • フィールドは多数あります ◦ 公式のドキュメントを確認しましょう • 実装が終わればMigrationです ◦
python manage.py makemigrations ◦ python manage.py migrate • Migrationが終われば確認です
READの実装(一覧・詳細ビューの実装) 今回はクラスベースビューを使用します メリット • コード量が大幅に減らすことができ大変便利です デメリット • 記述量が少なすぎるため、Post・Getの理解がないと少しとっつきにくい かもしれません
一覧ビュー 「ね?かんたんでしょう?」 アプリのviews.pyに実装します model:表示したいモデル template:表示用のhtmlファイルの場所
詳細ビュー アプリのviews.pyに追記します 実装は先程とほぼ同じです
テンプレート 1. templatesディレクトリ中にアプリ名と同じ名前のディレクトリを作成します 2. その中にlist.htmlとdetail.htmlを作成します
一覧のテンプレート ファイル名:templates/mytodo/list.html 実装:下の通り
詳細のテンプレート ファイル名:templates/mytodo/detail.html 実装:下の通り
ルーティング 1. アプリディレクトリにurls.pyの作成 2. プロジェクト全体のurls.pyにアプリ側のurls.pyをインクルード
アプリ側のurls.pyの設定 app_nameを設定することpathに名前をつけることがポイントです また、データを指定する必要があるもの詳細ビューや削除・編集などにはurlに主キーの 登録が必要です
プロジェクト全体のurls.pyの設定 includeによって、Djangoとappがより粗結合になり良い感じになります appのルートとincludeするときの文字列が対応するようになります。 ここまで来たらサーバを起動しましょう
Createのビュー実装 fields :django側で受け取るパラメータの指定 initial :modelに登録したChoiceフィールドの初期値の指定 success_url :postが成功したあとのページ遷移先の指定
テンプレートの実装 {% csrf_token %}はおまじないです {{form.as_p}}でmodelに対応したformが表示されます。
ルーティングの実装 作成したViewをインポートしてルーティングに追加します
Updateの実装 詳細画面に編集画面への遷移を追加します。 UpdateはCreateの大部分を再利用して使うことができます。 同じようにViewから実装していきます
ビューの実装 UpdateViewをimportし、継承してクラスベースビューを作成します。 UpdateはCreateとほぼ同じです。
テンプレートの実装 Createと同じ!名前だけupdate.htmlとして保存してください。
ルーティングの実装 詳細画面同様にurlに主キーを含める必要があります。
Deleteの実装 Deleteを実装する前にlist.htmlを変更しておきます。 deleteへの遷移を実装しておきます。 ついでにif文などの使い方にも軽く触れます。コピペで構いません。
ビューの実装 他のViewと代わりありません。 DeleteViewをインポート・継承して作成します
テンプレートの実装 Postでアクセスするのでformタグを実装するだけです
ルーティングの実装 deleteを更にpathに追記すれば終了です
Agenda 1. Djangoの基本的な流れ 2. 環境構築 3. ハンズオン(CRUDの実装) 4. 次のステップ
今回のハンズオンでわからない点が多かった方 躓きポイント • Webの知識 :HTTP(get,post)、HTML・CSS、Session・Cookieなど • DBの知識 :正規化、カラムの属性など • Python文法
:特にOverride • framework :お作法、ウェブアプリの挙動 • 環境 :Linux,仮想環境など そしてなによりも。。。 • わかりにくい説明
今回のハンズオンで物足りない方 足りない機能の追加などを試してみてください • adminの設定、認証・認可、検索機能、モデルのリレーション、RestAPI化... • デプロイ、settings.py・views.pyなどの分割 • テスト、エラー処理 • セキュリティ対策
• キャッシュ、N+1問題などのパフォーマンス改善 …..etc • 私に教わるまでもないくらい強い方
学習の参考に.. Django Girls Tutorial….https://tutorial.djangogirls.org/ja/ Naritoさんのblog….https://narito.ninja/ William Vincent…..https://wsvincent.com/ Make組blog...https://blog.hirokiky.org/ akiyoko blog
…. https://akiyoko.hatenablog.jp/ 何より公式を見ましょう!