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
78
django入門2
naoki-urabe
April 16, 2022
Tweet
Share
More Decks by naoki-urabe
See All by naoki-urabe
無駄課金回避__lambdaでEC2定期シャットダウン.pdf
naokiurabe
0
240
DevOps勉強会資料
naokiurabe
0
150
django入門
naokiurabe
0
110
Other Decks in Programming
See All in Programming
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
130
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
130
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
730
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
410
「抽象に依存せよ」が分からなかった新卒1年目の私が Goのインターフェースと和解するまで
kurogenki
0
100
SourceGeneratorのマーカー属性問題について
htkym
0
180
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
140
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
260
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
150
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
550
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Evolving SEO for Evolving Search Engines
ryanjones
0
150
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
210
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
61
52k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
480
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
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クラスを継承する 認証してない場合のリダイレクト先を設定する
ログインユーザーを作成する ログインユーザーを作成する
デモ