Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
django入門2
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
naoki-urabe
April 16, 2022
Programming
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
django入門2
naoki-urabe
April 16, 2022
More Decks by naoki-urabe
See All by naoki-urabe
無駄課金回避__lambdaでEC2定期シャットダウン.pdf
naokiurabe
0
270
DevOps勉強会資料
naokiurabe
0
160
django入門
naokiurabe
0
120
Other Decks in Programming
See All in Programming
APNsからLive Activityを開始する話
yumnumm
0
170
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
240
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
230
Event is what happens
moro
2
810
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
Raft: Consensus for Rubyists
vanstee
142
7.8k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Building Adaptive Systems
keathley
44
3.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
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クラスを継承する 認証してない場合のリダイレクト先を設定する
ログインユーザーを作成する ログインユーザーを作成する
デモ