Django Adminインターフェースを有効にして接続する方法

イントロダクション

もしDjango開発シリーズに従っているなら、Djangoアプリケーションを開始し、アプリケーションをMySQLに接続し、ブログWebアプリケーション内のPostsおよびCommentsのデータのデータベースモデルを作成しているでしょう。

このチュートリアルでは、Django管理サイトに接続して有効にする方法について説明します。Django管理サイトには、ウェブサイトのコンテンツを管理するために設計されたユーザーインターフェースが組み込まれています。

Djangoの公式ドキュメントによれば、これは組織の内部利用には理想的ですが、自動生成されたDjango管理インターフェースを使用してWebアプリケーションを構築することは推奨されていません。インターフェースがよりプロセス志向である必要があるか、データベーステーブルとフィールドの実装の詳細を抽象化することが問題になる場合は、管理側のビューを独自に書くことが最適です。

前提条件

このチュートリアルはDjango開発シリーズの一部であり、そのシリーズの継続です。

もしこのシリーズに従っていない場合、次の仮定がされています:

  • Djangoバージョン4以上がインストールされていること。
  • あなたのDjangoアプリがデータベースに接続されていること。私たちはMySQLを使用しており、この接続はDjangoシリーズの第二部「Djangoアプリを作成しデータベースに接続する方法」に従って行うことができます。
  • Unixベースのオペレーティングシステムを使用していること、できればUbuntu 22.04クラウドサーバーが望ましいです。これは私たちがテストしたシステムです。同様の環境でDjangoをセットアップしたい場合は、当社のチュートリアル「Ubuntu 22.04にDjangoをインストールし開発環境をセットアップする方法」を参照してください。

このチュートリアルは主にDjango管理インターフェースを扱っているため、若干異なるセットアップをしている場合でも、それに従うことができるかもしれません。

ステップ1 — 管理者を有効にする

PythonとDjangoで作業を開始する際には、Python仮想環境をアクティブにし、アプリのルートディレクトリに移動する必要があります。このシリーズに従っていれば、次のように入力してこれを達成できます。

  1. cd ~/my_blog_app
  2. . env/bin/activate

Django Adminを有効にするには、アプリがsettings.pyファイルのINSTALLED_APPSリストの一部であることを確認する必要があります。

設定ファイルのディレクトリに移動します:

  1. cd ~/my_blog_app/blog/blog/

ここから、settings.pyファイルを開きます。まだ追加されていない場合は、nanoなどのテキストエディタを使用してdjango.contrib.adminINSTALLED_APPSリストに追加します。

  1. nano settings.py

ファイルのINSTALLED_APPSセクションは、以下のファイルに類似しているはずです。リスト内の私たちのアプリは、一番上にある'blogsite',ですが、別の名前のアプリを作成した場合は、そのアプリがこのファイルに示されているようにリストされていることを確認してください。

settings.py
...
# Application definition
INSTALLED_APPS = [
    'blogsite',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
...

変更を加えた場合はファイルを保存して閉じてください。nanoでは、これを行うにはCTRLXを入力し、次にYを入力してからENTERを入力します。

次にurls.pyファイルを開くことができます。再びnanoまたは他のテキストエディタを使用してください。

  1. nano urls.py

ファイルの先頭にあるコメントの下に、次のようなファイルにする必要があります。

urls.py
"""
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

ファイルが上記と異なる場合は、上記の行をurls.pyファイルにコピーして貼り付けてください。

今、Djangoウェブプロジェクトがsettings.pyおよびurls.pyファイルに適切なコードがあることを確認したので、アプリケーションは管理モデルと管理ユーザーインターフェースにアクセスできることがわかります。

ステップ2 — Adminがインストールされていることを確認する

次に、モデルをデータベースに移行して、新しく追加された管理モデルが反映されるようにします。

manage.pyファイルがあるディレクトリに移動します。

  1. cd ~/my_blog_app/blog

modelsに変更を加えた場合は、次のようにmigrateコマンドを実行することを忘れないでください。

  1. python manage.py migrate

上記のファイルに変更を加えていない場合、migrateコマンドを実行すると、次のような出力が得られるはずです。

Output
Operations to perform: Apply all migrations: admin, auth, blogsite, contenttypes, sessions Running migrations: No migrations to apply.

それ以外の場合、出力には、アプリをサポートするためにDjangoが必要なマイグレーションを行ったことが示されます。

次に、次のコマンドを実行してサーバーを起動できます。 0.0.0.0をお使いのIPアドレスに置き換えてください。

  1. python manage.py runserver 0.0.0.0:8000

次に、お好みのブラウザで管理パネルのURLに移動します。サーバーのIPアドレスを入力してください。

http://your-server-ip:8000/admin/

この画面に到達すると、管理アプリが正常に有効化されていることがわかります。

アプリを有効にしても、まだDjango管理アカウントを設定していないかもしれません。次のステップでログインするために管理アカウントを作成できます。

ステップ3 — 管理者スーパーユーザーアカウントの作成

すでに管理アカウントを設定し、管理ページにログインできる場合は、このステップをスキップできます。

新しいターミナルを開いてサーバーに接続するか、Djangoアプリを無効にしてCTRLCを押して、サーバーターミナルのプログラミング環境で作業できるようにします。

Djangoは、スーパーユーザーアカウントを生成することができます。これはmanage.pyファイルを実行してスーパーユーザー作成プロセスを開始することで行えます。

  1. python manage.py createsuperuser

そうすると、ユーザー名、メールアドレス、パスワードの詳細を入力するように求められます。このチュートリアルでは、ユーザー名がadmin_user、メールが[email protected]、パスワードがadmin123の管理者アカウントを作成します。この情報は自分の好みで入力し、覚えやすいセキュアなパスワードを使用することをお勧めします。

Output
Username (leave blank to use 'root'): admin_user Email address: [email protected]

次に、Password:プロンプトが表示されたら2回パスワードを入力します。パスワードを入力するときに、入力したキーストロークの出力は受け取りません。各プロンプトの後にEnterキーを押してパスワードを確認します。

Output
Password: Password (again):

この時点では、ユーザー名がadmin_userでパスワードがadmin123の管理者アカウントがあります。

ログインして、管理者ページに存在するものを調査しましょう。

必要な場合は、Djangoアプリを次のコマンドで再実行してください:python manage.py runserver 0.0.0.0:8000、そしてURLhttp://your-server-ip:8000/admin/に再度移動して管理者ログインページに移動します。その後、作成したばかりのユーザー名とパスワードでログインしてください。

ログインに成功すると、次のページが表示されます。

次に、ブログアプリを管理パネルに接続する作業が必要です。

ステップ4 — 投稿とコメントのためのURLパターンを作成します

前の手順では、管理者インターフェイスに正常にログインしましたが、ブログアプリがまだ利用できないことに気付いたかもしれません。管理者インターフェイスにブログアプリを追加して登録するには、関連するモデルPostCommentを追加する必要があります。

これを行うには、urls.pyという名前の空のファイルを作成します。blogsiteディレクトリ内に、次のように:

  1. touch ~/my_blog_app/blog/blogsite/urls.py

このファイルには、ブログアプリケーションのURLパターンを追加して、管理者インターフェイスを介してアクセスできるようにします。

作成したurls.pyファイルの場所に移動してください。

  1. cd ~/my_blog_app/blog/blogsite/

その後、例えばnanoでファイルを開きます。

  1. nano urls.py

次のコードをファイルに追加します。

urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('$/', views.posts, name='posts'),
    path('$/', views.comments, name='comments'),
]

これらは、アプリケーションがviewsにアクセスできるようにするために必要なURLパターン式です。投稿およびコメント。これらのviewsはまだ作成していませんが、後でこのシリーズでカバーします。

ステップ5 — ブログアプリを管理者に接続する

ブログを管理者インターフェースに接続すると、管理ダッシュボード内に投稿コメントのリンクが表示されます。現在、ダッシュボードにはグループユーザーのリンクが表示されています。

両者を接続するには、blogsiteの管理ファイル内で投稿コメントモデルを登録する必要があります。

blogsiteディレクトリに移動します:

  1. cd ~/my_blog_app/blog/blogsite

次に、お好みのテキストエディタでadmin.pyファイルを開きます。

  1. nano admin.py

このファイルには、インポートステートメントとコメントが含まれています。

admin.py
from django.contrib import admin

# モデルをここに登録してください。

ファイルを編集して、アプリをサポートするために次のコードが含まれるようにします。

admin.py
from django.contrib import admin
from blogsite.models import Post
from blogsite.models import Comment


admin.site.register(Post)
admin.site.register(Comment)

ファイルを保存して終了したら、満足してください。

現在、PostCommentモデルを管理パネルに登録しました。これにより、管理インターフェースはこれらのモデルを認識し、管理ダッシュボードを表示しているユーザーに表示できるようになります。

ステップ6 — ブログアプリが管理に追加されていることを確認する

関連するPythonコードを追加したので、サーバーを実行してください。 http://your-server-ip:8000/admin を開き、すでにログインしていない場合は資格情報を使用して管理者にログインします。このチュートリアルでは、ユーザー名admin_userとパスワードadmin123でログインしています。

ログインしたら、次のウェブページが表示されるはずです。前と変わっていない場合は、ブラウザを更新する必要があるかもしれません。

これにより、アプリblogsiteがDjango管理ダッシュボードに接続されたことが確認できます。

アプリのテストが終わったら、CTRL + Cを押してDjangoサーバーを停止できます。これにより、プログラミング環境に戻ります。

Python環境を終了する準備ができたら、deactivateコマンドを実行できます:

  1. deactivate

プログラミング環境を無効にすると、ターミナルのコマンドプロンプトに戻ります。

結論

このチュートリアルでは、管理者インターフェースを正常に有効にし、管理者ログインを作成し、PostおよびCommentモデルを管理者に登録しました。

Django管理者インターフェースを使用して、ブログで投稿を作成し、コメントをモニターできるようになります。

次回は、ブログアプリケーションのviewsを作成します。

Source:
https://www.digitalocean.com/community/tutorials/how-to-enable-and-connect-the-django-admin-interface