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入門2
Search
naoki-urabe
April 16, 2022
Programming
0
72
django入門2
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入門
naokiurabe
0
99
Other Decks in Programming
See All in Programming
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
240
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
360
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
640
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
910
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
510
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
52
33k
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
120
XP, Testing and ninja testing
m_seki
3
240
NPOでのDevinの活用
codeforeveryone
0
810
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
150
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
530
Featured
See All Featured
It's Worth the Effort
3n
185
28k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Practical Orchestrator
shlominoach
189
11k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Optimizing for Happiness
mojombo
379
70k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Transcript
Django勉強会第2回
前回の宿題から Q.Djangoの由来は? A.ギタリストのDjango Reinhardtに因んで Q.今まで何を作ったか A.これ Q.railsとの使用感の違いは? A.来月報告します。。。
前回の宿題から 他の言語のフレームワークとの使い分けは? pythonは機械学習ライブラリが充実しているので機械学習を用いる場合はdjangoのほ うがよいかも どんな汎用Viewがある ListView,DetailView,formView,CreateView... たくさんあります なれないうちはベーシックなViewで十分
今日の内容 • モデル・Viewの分割 • CRUD処理 • 認証 ソースコード
Djangoアーキテクチャ
モデル・Viewの分割 モデル・Viewの処理が多くなってくるにつれ、それぞれのファイルの見通しが悪くなる →分割して見やすくする models.py 1. 2. 3. . . .
. 100 views.py 1. 2. 3. . . . . 100
モデルの分割 modelsディレクトリを作成する modelsディレクトリに__init__.pyとモデルファイルを作成する 新たにモデルが出てきたときはmodelsディレクトリにモデルファイルを追加していくだけ
viewでモデルを利用する場合 models.pyを利用していたときと同様にパスを指定してモデルをインポートすれば良い
Viewを分割する viewsディレクトリを作成する viewsディレクトリに__init__.pyとモデルファイルを作成する 新たにモデルが出てきたときはviewsディレクトリにモデルファイルを追加していくだけ
form djangoはモデルから簡単にフォームを作成することができる class Metaに対象とするモデル・利用する属性を設定するだけ model form
View側の準備 formインスタンスを生成しテンプレート側に渡す
template側の準備 view側から渡されたformオブジェクトのフィールドを指定することによって入力フォーム を用意することができる 入力フォームを利用するには{% csrf_token %}をフォーム内に記述しなければならない (csrfを防ぐため)
リクエストのバリデーション 入力データを取得するにはis_validメソッドを実行しなければならない is_validメソッドを実行後、フォームオブジェクトにcleaned_dataという変数が生成される リクエストオブジェクトより入力データを受取り型変換 入力データをバリデーション(検証) ビジネスロジック テンプレートにエラーメッセージ
データのCRUD処理
データ操作処理 単一のデータ取得 User.objects.get(カラム=値) リスト取得 AND検索 User.objects.filter(カラム1=値1,カラム2=値2) 全件取得 User.objects.all()
データ操作処理 OR検索処理 from django.db.models import Q User.objects.filter(Q(カラム=値) | Q(カラム=値)) 不等号
User.objects.filter(age__??=1000) >1000 gt <1000 lt >=1000 gte <=1000 lte 900 or 1000 in=[900,1000]
認証 誰でも見れてしまう状態 認証をつける djangoは標準で認証機能をつけてくれている
アカウントアプリケーションの準備 上記コマンドを打ちログインのためのアプリケーションを用意する
settings設定 ログイン後にどこに飛ぶのかを設定しておく プロジェクトのurls.pyにaccountsのパスを通しておくと認証のViewが有効になる
View側の設定 LoginRequiredMixinクラスを継承する 認証してない場合のリダイレクト先を設定する
ログインユーザーを作成する ログインユーザーを作成する
デモ