ウェブサービスの運営で、「特定のユーザーでログインして画面の動作を試す」ことをしたい場合、django-hijackというパッケージで簡単に実現できます。 試したバージョンは、Python 3.10, Django 3.2, django-hijack 3.1.2 です。
ドキュメント
django-hijack 2.x系のドキュメントはReadTheDocsでホストされていますが、3.x系のドキュメントはGitHubのdocsディレクトリを参照とのことでした。
django-hijack/index.md at master · django-hijack/django-hijack · GitHub
djanog-hijackの導入
2.x系はコア機能のdjango-hijackと、管理画面の拡張機能のdjango-hijack-adminの2つのPyPIのパッケージに別れていましたが、3.xではdjango-hijackパッケージのみに統合されたようです。
インストールは django-hijack
のパッケージのみでokでした。
pip install django-hijack
ドキュメントにある通り、Djangoの settings.py
を編集し、 INSTALLED_APPS
と MIDDLEWARE
を設定します。
# settings.py INSTALLED_APPS = [ '…', 'hijack', 'hijack.contrib.admin', # Django Adminの統合機能を使う場合 ] MIDDLEWARE = [ '…', 'hijack.middleware.HijackUserMiddleware', ]
別ユーザーに成り代わる機能を提供するViewが必要なので、 urls.py
でdjango-hijackのエンドポイントをincludeします。
# urls.py from django.urls import include, path urlpatterns = [ path('hijack/', include('hijack.urls')), # … ]
これで管理画面のユーザー一覧に「HIJACK」というボタンが表示されます。ボタンを押すとユーザーに成り代わります。
以下はユーザー名を表示するだけの簡単なViewを作ってテストした画面です。画面下部のメッセージはdjango-hijackが自動で挿入したものになります。
カスタムのユーザーモデルを利用していて、Adminを独自で拡張している場合は、 hijack.contrib.admin.admin
モジュールにある HijackUserAdminMixin
を利用する必要があるかもしれません。
デフォルトではHIJACKボタンを押せるユーザーは、管理者(is_superuser
が true
)のみです。 settings.HIJACK_PERMISSION_CHECK
で権限のチェックをカスタマイズできます。