Python入門 Djangoの使い方(その13)admin画面を使う。


Python入門 Djangoの使い方(その13)admin画面を使う。

はじめに

不定期連載のPython入門第27回目です。今回もPythonのWebフレームワーク「Django」を使っていきましょう。PythonのWebフレームワークといえばFlaskやPyramidなどもありますが、最も使われているのはDjangoです。

Djangoでは各アプリケーションのデータを操作できる管理画面が用意されています。
今回はその機能を使ってみたいと思います。

※参考:本家チュートリアル

今回の内容:

  • admin画面を有効にする。
  • admin画面に自分で作成したモデルを表示する。
  • admin画面でテーブルを操作する。

前提条件:

  • Pythonバージョン:Python3
  • Djangoバージョン:Django1.10.5
  • 実行環境:Windows8
  • ツール:VisualStudioCommunity2015

admin画面を有効にする。

admin画面を使うにはまず、admin機能を有効にする必要があります。
まず、urls.pyを確認しましょう。

以下2か所のコメント部分がありました。

# Uncomment the next lines to enable the admin:
# from django.conf.urls import include //★
# from django.contrib import admin //★
# admin.autodiscover() //★
    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), //★

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)), //★

どちらも管理機能を有効するにはこの部分をアンコメントするように書かれています。
★マークをつけた箇所のコメント(先頭の#記号)を外しましょう。

これだけでadmin機能を使うことができるようになりました。
webサーバを起動し、「http://localhost:8000/admin」にアクセスしてみましょう。
以下のように管理機能のログイン画面にアクセスできました。

ログインするにはユーザとパスワードが必要ですので、こちらも作成しておきます。

python manage.py createsuperuser

名前とe-mailとパスワード(2回)が問われますので、設定しましょう。
「Superuser created successfully.」と出てくればOKです。

再度webサーバを立ち上げ、ログイン画面にアクセスしてみましょう。
作成したユーザ名とパスワードでログインができればOKです。

admin画面に自分で作成したモデルを表示する。

前々回作成したモデルにUserとSectionがありました。このデータを管理画面で操作できるようにすることができます。

先ほどのログイン後のページで「Users」という項目ができているので、あれもう編集できるのかなと思ってしまいますが、これは管理ユーザのことでmyApp1のUserとは別物です。
つまり、自分で作成したアプリケーションのモデルはデフォルトでは管理画面上には出てこないことになります。
それを表示させるには、各アプリケーションフォルダ下にある「admin.py」を編集する必要があります。

デフォルトでは以下の様になっています。

from django.contrib import admin

# Register your models here.

「Register your models here.」以下に次のように追記します。

from .models import User,Section
admin.site.register(User)
admin.site.register(Section)

ファイルを保存したら再度管理画面にアクセスしてみてください。
以下の様に、myApp1のUserとSectionがメニューに現れるはずです。

admin画面でテーブルを操作する。

それではまずはSectionsの方から追加していきましょう。
メニュー「Sections」の横の「add」をクリックすればセクションが追加できます。
今回は「システム部」「営業部」「総務部」の3つを追加してみました。
一覧を見てみましょう。

どのセクションも「Section object」となっていてどれがどの部門だか分かりづらいですね。
モデルを以下のように修正しましょう。

class Section(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

こうすると部門名が表示されるようになります。

では次にUserの方を追加してみましょう。

赤枠で表示した部分を見てください。なんと関連するセクションが選べるようになっているのです。
先ほど追加した3セクションが表示されていることがわかります。
モデルを作成する際にSectionと関連付けていたことでこのようなことができるのです。

まとめ

今回は管理画面を使ってみました。簡単にCRUDが実現できる(というかできている)ことが分かりました。

  • このエントリーをはてなブックマークに追加

PAGE TOP