Django 管理サイトを5分で完全に理解した (い) / I have perfectly understood django admin in 5 minutes PyCon JP 2020 LT

C3a47a823a1e7adcb5be27cc3df5c482?s=47 akiyoko
August 29, 2020

Django 管理サイトを5分で完全に理解した (い) / I have perfectly understood django admin in 5 minutes PyCon JP 2020 LT

PyCon JP 2020 LT

C3a47a823a1e7adcb5be27cc3df5c482?s=128

akiyoko

August 29, 2020
Tweet

Transcript

  1. Django 管理サイトを 完全に理解した い 2020. 8.29 PyCon JP LT(5 min)

    横瀬 明仁(akiyoko) 5分で
  2. ⾃⼰紹介 • 名 前 : akiyoko(横瀬 明仁) • Python 歴

    : 8年くらい(Django を7年くらい) • ブログ : akiyoko blog(https://akiyoko.hatenablog.jp/) • 技術同⼈誌 : 『現場で使える Django の教科書《基礎編》』 『現場で使える Django の教科書《実践編》』 『現場で使える Django REST Framework の教科書』 『現場で使える Django 管理サイトのつくり⽅』 1 New !!
  3. 概要 • Django に標準搭載されている⽬⽟機能のひとつである 「管理サイト(Django Admin)」を5分で完全解説 2

  4. ⽬次 • Django 管理サイト(Django Admin)とは? • Django 管理サイトの基本 • Django

    管理サイトをカスタマイズするためのポイント 3
  5. • Django 管理サイト(Django Admin)とは? • Django 管理サイトの基本 • Django 管理サイトをカスタマイズするためのポイント

    4
  6. Django 管理サイトとは? • 管理サイト(Django Admin)とは、 主に システム管理者や開発者が利⽤する ことを想定して作られた 「Django のモデルに対応するレコードの

    CRUD 操作ができる画⾯を備えた Webアプリケーション」 • ひな型プロジェクトからデフォルトで使える⽬⽟機能のひとつ 5
  7. 実態調査アンケートしてみた • Django 管理サイトの利⽤実態調査をしてみた https://bit.ly/31DQDgw 6

  8. Q1.Django 管理サイトを使っている? • 事前アンケートでは Django 利⽤者の約9割が使⽤ 7

  9. Q2.どのようなユースケースで利⽤しているか? • 管理サイトはあらゆるモデルに 対応できるように汎⽤的に作ら れており、ある程度のカスタマ イズも考慮されていて幅広い ユースケースで利⽤することが できる • 実際の現場では「開発中のテス

    トデータ投⼊」や「システム利 ⽤ユーザーの情報管理」で利⽤ しているケースが多い 8
  10. Q3.管理サイトのメリットは? 9 • デフォルトで使える点やほ んの数⾏書くだけでモデル の CRUD 機能が追加でき る点が特に⾼く評価されて いる

    • お⼿軽で簡単に使えるとい うのが管理サイトの⼤きな メリット
  11. Q4.管理サイトのデメリットは? • 「ある程度以上のカス タマイズになると難易 度が上がる」や「簡単 にカスタマイズできる かどうかのジャッジに ノウハウや調査が必 要」など、カスタマイ ズ系のデメリットが圧

    倒的に多い • 「⽇本語の情報が少な い」や「仕様を把握す るのにひと苦労」が多 いのは、困ったときの ヒントが得られにくい という状況を表してい るものと考えられます。 10
  12. Q5.管理サイトのカスタマイズは難しい? • 難しいと答えた⽅が多い傾向 11

  13. アンケート結果をまとめると • 管理サイト最⼤の魅⼒はその⼿軽さ • ひな型プロジェクトから設定不要で利⽤することができ、ほんの数⾏書くだ けで CRUD 画⾯が追加できる • あらゆるモデルに対応できるように汎⽤的に作られており、簡単に

    カスタマイズできるように考慮されていて、幅広いユースケースで 利⽤できるのもメリット • その半⾯、細かい隠し機能も多く、仕様全体を把握するのが⼤変 • カスタマイズ系での困りごとが多い • カスタマイズする場合は 事前にその限界(基本仕様でどこまでできるのか) とカスタマイズの特性(どんなカスタマイズが簡単でどんなカスタマイズが 難しいのか)を⼗分に把握しておく必要がある 12
  14. • Django 管理サイト(Django Admin)とは? • Django 管理サイトの基本 • Django 管理サイトをカスタマイズするためのポイント

    13
  15. 管理サイトの利⽤⼿順 • アプリケーションの admin.py に、↓のように数⾏書くだけで モデルの CRUD 画⾯が利⽤できる 14 from

    django.contrib import admin from .models import Book admin.site.register(Book) shop/admin.py
  16. 管理サイトの全体像 • 管理サイト全体の画⾯項⽬や挙動は django.contrib.admin.sites.AdminSite クラスに定義されている • モデルごとの画⾯項⽬や挙動は django.contrib.admin.options.ModelAdmin クラスに定義されている •

    AdminSite と ModelAdmin は、URLconf とビューを兼ね備えたよう なクラス • 管理サイト⽤の URLパターンとそれに対応するビュー⽤メソッドが提供 • カスタマイズするためのクラス変数やメソッドが多数⽤意されている 15
  17. 管理サイトの全体像 16

  18. • Django 管理サイト(Django Admin)とは? • Django 管理サイトの基本 • Django 管理サイトをカスタマイズするためのポイント

    17
  19. 管理サイトのカスタマイズ(AdminSite) • アプリケーションの起動時に AdminSite オブジェクトが⽣成される • 起動時に独⾃の AdminSite 派⽣クラスを読み込むことが可能 https://docs.djangoproject.com/ja/3.1/ref/contrib/admin/#overriding-the-default-admin-

    site 18 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles’, # My applications 'shop.apps.ShopConfig', ] デフォルトアプリケーションのひとつとし て django.contrib.admin(管理サイト)が 列挙されている
  20. 管理サイトのカスタマイズ(ModelAdmin) • モデルごとの画⾯や機能をカスタマイズするには、独⾃の ModelAdmin 派⽣ク ラスを⽤意して、AdminSite の register() の第⼆引数として渡す 19

    from django.contrib import admin from .models import Book class BookAdmin(admin.ModelAdmin): list_display = ('id', 'title', 'size', 'publish_date’) admin.site.register(Book, BookAdmin) admin.site は AdminSite クラスのグロー バルオブジェクト クラス変数やメソッドをオーバーライド
  21. 管理サイトのカスタマイズ(その他) • 管理サイトのカスタマイズ⽅法はほかにも… 1. テンプレートのルックアップ優先順を利⽤して、テンプレートをカスタマイズ 2. 静的ファイルのルックアップ優先順を利⽤して、CSS をカスタマイズ 3. Django

    パッケージを利⽤して、管理サイト全体の⾒た⽬をカスタマイズ 20
  22. まとめ • 5分で完全解説するなんて無理… • PyCon JP の 45分トークとして申し込んだ内容だから… • 続きは…

    技術書典9(9/12 〜 9/22)で Django 管理サイトだけにフォーカスした 新刊『現場で使える Django 管理サイトのつくり⽅』を頒布 • 基本仕様、カスタマイズ、テストを完全解説!! • 152ページ(イカレたボリューム!) 21