Django Admin 管理ツール
Django は Web ベースの管理ツールを提供します。
Django の自動管理ツールは django.contrib の一部です。プロジェクトの settings.py の INSTALLED_APPS で確認できます:
/HelloWorld/HelloWorld/settings.py ファイルのコード:
django.contrib は大規模な機能セットであり、Django の基本コードの構成要素です。
管理ツールを有効にする
通常、プロジェクトを生成するときに urls.py で自動的に設定されているため、コメントを外すだけで済みます。
設定項目は次のとおりです:
/HelloWorld/HelloWorld/urls.py ファイルのコード:
これらがすべて設定されると、Django 管理ツールを実行できます。
管理ツールを使用する
開発サーバーを起動し、ブラウザで http://127.0.0.1:8000/admin/ にアクセスすると、次のような画面が表示されます:
コマンドを使用して、python manage.py createsuperuserスーパーユーザーを作成します。次のようになります:
# python manage.py createsuperuser Username (leave blank to use 'root'): admin Email address: [email protected] Password: Password (again): Superuser created successfully. [root@solar HelloWorld]#
その後、ユーザー名とパスワードを入力してログインすると、次の画面が表示されます:
admin インターフェースでデータモデルを管理するには、まずそのデータモデルを admin に登録する必要があります。例えば、先ほど TestModel にモデル Test を作成しました。TestModel/admin.py を修正します:
HelloWorld/TestModel/admin.py: ファイルのコード:
リフレッシュすると、Testmodel データテーブルが表示されます:
複雑なモデル
管理ページの機能は強力で、より複雑なデータモデルを十分に処理できます。
まず TestModel/models.py に、より複雑なデータモデルを追加します:
HelloWorld/TestModel/models.py: ファイルのコード:
ここには2つのテーブルがあります。Tag は Contact を外部キーとして持ちます。1つの Contact は複数の Tag に対応できます。
また、これまで見たことのない属性タイプも多数あります。例えば、IntegerField は整数を格納するために使用されます。
TestModel/admin.py で複数のモデルを登録して表示します:
HelloWorld/TestModel/admin.py: ファイルのコード:
管理ページをリフレッシュすると、表示結果は次のようになります:
上記の管理ツールを使用すると、複雑なモデル操作を行うことができます。
まだテーブル構造を作成していない場合は、次のコマンドで作成できます:
$ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更 $ python manage.py migrate TestModel # 创建表结构
カスタムフォーム
管理ページをカスタマイズして、デフォルトのページを置き換えることができます。例えば、上記の "add" ページです。name と email の部分だけを表示したい場合。TestModel/admin.py を修正します:
HelloWorld/TestModel/admin.py: ファイルのコード:
上記のコードは ContactAdmin クラスを定義しており、管理ページの表示形式を指定しています。
その中の fields 属性は、表示するフィールドを定義します。
このクラスは Contact データモデルに対応するため、登録するときはそれらを一緒に登録する必要があります。表示結果は次のとおりです:
入力欄をブロックに分けることもでき、各ブロックに独自のフォーマットを定義することもできます。TestModel/admin.py を次のように修正します:
HelloWorld/TestModel/admin.py: ファイルのコード:
上記のフィールドは Main と Advance の2つの部分に分かれています。classes は、その部分の CSS フォーマットを指定します。ここでは Advance 部分を非表示にします:
Advance 部分の横には展開用の Show ボタンがあり、展開後に Hide をクリックすると非表示にできます。下図のようになります:
インライン(Inline)表示
上記の Contact は Tag の外部キーであるため、外部参照の関係があります。
一方、デフォルトのページ表示では両者が分離されており、両者の従属関係を表現できません。インライン表示を使用すると、Tag を Contact の編集ページに付随させて表示できます。
TestModel/admin.py を修正します:
HelloWorld/TestModel/admin.py: ファイルのコード:
表示結果は次のとおりです:
リストページの表示
Contact に数件のレコードを入力すると、Contact のリストページは次のようになります:
このページの表示もカスタマイズできます。例えば、リストにより多くの項目を表示するには、ContactAdmin に list_display 属性を追加するだけです:
HelloWorld/TestModel/admin.py: ファイルのコード:
ページをリフレッシュすると、表示結果は次のようになります:
検索機能は大量のレコードを管理するときに非常に便利です。search_fields を使用して、このリストページに検索バーを追加できます:
HelloWorld/TestModel/admin.py: ファイルのコード:
この例では、name が サンプル のレコードを検索しました。表示結果は次のとおりです:
Django Admin 管理ツールには他にも非常に多くの実用的な機能があります。興味のある方は詳しく調べてみてください。
その他の拡張