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
55
django入門2
naoki-urabe
April 16, 2022
Tweet
Share
More Decks by naoki-urabe
See All by naoki-urabe
無駄課金回避__lambdaでEC2定期シャットダウン.pdf
naokiurabe
0
200
DevOps勉強会資料
naokiurabe
0
130
django入門
naokiurabe
0
65
Other Decks in Programming
See All in Programming
Implementing Design Systems in Swift
seyfoyun
1
460
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
760
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
970
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
500
"config" ってなんだ? / What is "config"?
okashoi
0
310
Java 22 Overview
kishida
1
190
スキーマ駆動開発による品質とスピードの両立 - 私達は何故、スキーマを書くのか
kentaroutakeda
0
180
Apache Hive 4 on Treasure Data
ryukobayashi
1
420
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
200
From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE
ivargrimstad
0
530
PostmanでAPIの動作確認が楽になった話
h455h1
0
180
雑に思考を整理する技術と効能
konifar
63
30k
Featured
See All Featured
Practical Orchestrator
shlominoach
183
9.7k
4 Signs Your Business is Dying
shpigford
176
21k
The Invisible Side of Design
smashingmag
294
49k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
Typedesign – Prime Four
hannesfritz
36
2.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
A Tale of Four Properties
chriscoyier
152
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
7
3.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
13
8.3k
Intergalactic Javascript Robots from Outer Space
tanoku
266
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クラスを継承する 認証してない場合のリダイレクト先を設定する
ログインユーザーを作成する ログインユーザーを作成する
デモ