Submit Search
Upload
PythonフレームワークDRFの便利機能
•
0 likes
•
96 views
S
SosukeYamada
Follow
Django や DRF での便利な機能やライブラリをまとめました
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 13
Download now
Download to read offline
Recommended
Webアプリを公開するまで
Webアプリを公開するまで
SosukeYamada
ヘッドレスCMS調査 Strapiを試してみた
ヘッドレスCMS調査 Strapiを試してみた
SosukeYamada
Laravel管理画面ジェネレーター
Laravel管理画面ジェネレーター
Takuya Tejima
Next.js Storybook Driven Development
Next.js Storybook Driven Development
Takuya Tejima
YYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビュー
宜浩 香月
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
Kei Yagi
SCRUMMASTER THE BOOK翻訳活動における、リモート x モブ実践
SCRUMMASTER THE BOOK翻訳活動における、リモート x モブ実践
ikikko
子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう
Masao Niizuma
Recommended
Webアプリを公開するまで
Webアプリを公開するまで
SosukeYamada
ヘッドレスCMS調査 Strapiを試してみた
ヘッドレスCMS調査 Strapiを試してみた
SosukeYamada
Laravel管理画面ジェネレーター
Laravel管理画面ジェネレーター
Takuya Tejima
Next.js Storybook Driven Development
Next.js Storybook Driven Development
Takuya Tejima
YYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビュー
宜浩 香月
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
Kei Yagi
SCRUMMASTER THE BOOK翻訳活動における、リモート x モブ実践
SCRUMMASTER THE BOOK翻訳活動における、リモート x モブ実践
ikikko
子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう
Masao Niizuma
エンジニアのお仕事.pdf
エンジニアのお仕事.pdf
shumashimo1
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
cch-robo
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
Noriaki Sakata
LIGでのDocker活用
LIGでのDocker活用
Hayashi Yuichi
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
光吉 浜谷
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
Visasq
Visasq
創史 花村
Things to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdf
RYUTAHATAKEYAMA
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
Tatsuya Deguchi
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
Drecom Co., Ltd.
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
Masayuki KaToH
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモ
Akihiro Sugiyama
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
Tomoyuki Sugita
Django で始める PyCharm 入門
Django で始める PyCharm 入門
kashew_nuts
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4
Noriaki Sakata
Pythonにおけるデバッガツールpdbについて
Pythonにおけるデバッガツールpdbについて
Ryota Sakamoto
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
Insight Technology, Inc.
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化
takashi ono
何を自動化するのか
何を自動化するのか
暁 三宅
RLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメント
Itsuki Sakitsu
More Related Content
Similar to PythonフレームワークDRFの便利機能
エンジニアのお仕事.pdf
エンジニアのお仕事.pdf
shumashimo1
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
cch-robo
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
Noriaki Sakata
LIGでのDocker活用
LIGでのDocker活用
Hayashi Yuichi
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
光吉 浜谷
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
Visasq
Visasq
創史 花村
Things to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdf
RYUTAHATAKEYAMA
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
Tatsuya Deguchi
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
Drecom Co., Ltd.
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
Masayuki KaToH
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモ
Akihiro Sugiyama
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
Tomoyuki Sugita
Django で始める PyCharm 入門
Django で始める PyCharm 入門
kashew_nuts
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4
Noriaki Sakata
Pythonにおけるデバッガツールpdbについて
Pythonにおけるデバッガツールpdbについて
Ryota Sakamoto
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
Insight Technology, Inc.
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化
takashi ono
何を自動化するのか
何を自動化するのか
暁 三宅
RLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメント
Itsuki Sakitsu
Similar to PythonフレームワークDRFの便利機能
(20)
エンジニアのお仕事.pdf
エンジニアのお仕事.pdf
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
LIGでのDocker活用
LIGでのDocker活用
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Visasq
Visasq
Things to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdf
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモ
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
Django で始める PyCharm 入門
Django で始める PyCharm 入門
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4
Pythonにおけるデバッガツールpdbについて
Pythonにおけるデバッガツールpdbについて
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化
何を自動化するのか
何を自動化するのか
RLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメント
PythonフレームワークDRFの便利機能
1.
Pythonフレームワーク Django & DRFの便利機能 山田創介
2.
自己紹介 経歴 勤怠管理システムのSaasの開発経験後、2019年8月フリーランスとして起業。2022年1月に株式会社 coroutineの取締 役に就任。フリーランスと役員を兼業 業務ではバックエンドを軸とし、Laravel(PHP) や
DRF(Python)などの経験を主にする。 また、React.jsをはじめとしたフロントエンド開発やGitHub Actionsを利用したCI/CDの整備なども行っている。 現在は 女性下着を販売する会社でDXを行うプロジェクトにPGとして参画中 山田創介(@yamasaw44) フリーランス / 株式会社 coroutine 取締役 スキル DRF(Python)/Laravel/Nuxt.js React.js/Cypress.js/Storybook/Tailwind CSS Go lang/ AWS その他 eSportsの大会を運営したりしています。趣味はゲームや登山です
3.
PythonのWebフレームワーク Django DjangoはPythonで開発を行う、フルスタックなフレームワークです。ユーザ管理や認証 機能などがあります。Djangoの特に大きな特徴はO/Rマッパーとしての機能が豊富であ り、Modelの定義を元にマイグレーションファイルの作成やリクエストバリデーション等を 行う事ができます。 また公式ドキュメントも日本語に言語対応がされており、またチュートリアルも存在する ため学習も容易に行う事ができます。 https://docs.djangoproject.com/ja/4.0/
4.
Djangoフレームワークのメリット・デメリット メリット フルスタックなフレームワークではあるが、Modelをベースに様々な機能を実装していけるため コード記述量が少なくすみかつ、コードの管理コストが減る。 デメリット PHPに比べるとユニットテストを実施するライブラリがあまり良くない。品質がよくないというより PHPのライブラリの方が洗礼されている感がある。 フルスタックなフレームワークではあるが、フロントエンドの部分が弱い。 jsファイルを利用するた めにDjangoの専用コマンドを実施する必要がある。templateをコンポーネント化しづらい。etc…
5.
Modelからmigrationファイルを自動生成 Modelの定義を元にmigrationファイルを作成する事ができます。migrationファイルの 作成にはDjangoのコマンドを利用し作成する事が可能です。また、すでにmigrationファ イルを作成したModelを変更した場合の変更差分もmigrateする事が可能です。 PHPのフレームワークLaravelではmigrationファイルの生成コマンドは存在するが、 Model内に定義されたものを全てmigrationファイルに記述する機能ではなく空の migrationファイルを作成し定義していくと言うものなので、Djangoで実装された migrationファイル作成機能の方が利便性が高い
6.
migrationファイルのジェネレート 左のModelの定義から右のmigrationファイルが作成される
7.
ModelからER図(クラス図)を作成 Djangoの拡張ライブラリ django-extensionsと図形描画用のライブラリgraphvizとそれ をPythonで利用でき事を可能にするpygraphvizの3つを利用します。 django-extensionsとpygraphvizはpipによりインストールする事が可能であるが graphvizは別途brewなどを利用しインストールする必要がある
8.
pygraphvizによるER図のジェネレート 左のコードから右の図のようなER図が生成されます
9.
Djangoは便利ではあるがデメリットも多い Djangoフレームワークはフルスタックであるがフロントエンドに関わる機能が全体的に 弱い。 - Datetime型などプリミティブな型以外はjson dumpする事はできず、独自でjson encodeの処理を実装しないとかなり使いにくい。 -
Djangoのコマンド(collectstatic)js,cssなどの静的ファイルを再配置しなければ利 用できない。 - templateがコンポーネント化しづらいコンポーネントの中にコンポーネントを差し込 めない(Vueで言うSlot)など
10.
Djangoのデメリットを解決したものがDRF Djangoのフロントエンド部分が弱いという欠点をなくせるものがDRF(Django REST framework)になります。名称通りDjangoを利用してRESTfulにAPIを提供する事ができ るようになるライブラリです。特徴としてDjangoで作成したModelを元にRESTfulなAPIを 作成する事がで来ます。
11.
プロダクトコードからAPI仕様書を作成 drf-spectacularを利用すると、DRFで記載したコードを元にAPI仕様書を作成する事が 可能になるなります。 このライブラリを組み合わせる事で、Modelの定義を行うだけでAPIの作成、API仕様書 の作成、Requestバリデーションの実装、migrationファイルの作成といった大部分の開 発を実現する事ができます。
12.
プロダクトコードからAPI仕様書を作成 左のコードをジェネレートすると右のようなAPI仕様書になる
13.
ご清聴ありがとうございました! Twitter: @yamasaw44
Download now