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
80
0
Share
django入門2
naoki-urabe
April 16, 2022
More Decks by naoki-urabe
See All by naoki-urabe
無駄課金回避__lambdaでEC2定期シャットダウン.pdf
naokiurabe
0
250
DevOps勉強会資料
naokiurabe
0
150
django入門
naokiurabe
0
110
Other Decks in Programming
See All in Programming
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
680
Oxlintのカスタムルールの現況
syumai
5
980
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.5k
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.4k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
5.5k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
170
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
120
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
180
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
dRuby over BLE
makicamel
2
290
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
1
230
net-httpのHTTP/2対応について
naruse
0
420
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
170
How to make the Groovebox
asonas
2
2.2k
It's Worth the Effort
3n
188
29k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Agile that works and the tools we love
rasmusluckow
331
21k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
380
Leo the Paperboy
mayatellez
7
1.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
430
HDC tutorial
michielstock
2
680
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クラスを継承する 認証してない場合のリダイレクト先を設定する
ログインユーザーを作成する ログインユーザーを作成する
デモ