---
slug: "django-change-user-on-session"
title: "Django のログインユーザーを django shell を使って切り替える"
description: "Django シェルを使って、既に確立しているセッションのユーザーを他のユーザーに変更する方法です。\n\n本番環境で行うと危険なので行わないでください。"
url: "https://www.ytyng.com/blog/django-change-user-on-session"
publish_date: "2023-10-12T12:41:35Z"
created: "2023-10-12T12:41:35Z"
updated: "2026-02-26T04:43:56.897Z"
categories: ["Django"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20250615/0520dfca7e0c4e72a2420ff1c6bebca4.png.webp?width=768"
has_video: true
has_music: true
video_urls: ["https://media.ytyng.net/ytyng-blog/294/featured-video-1.mp4", "https://media.ytyng.net/ytyng-blog/294/featured-video-2.mp4", "https://media.ytyng.net/ytyng-blog/294/featured-video-3.mp4"]
music_urls: ["https://media.ytyng.net/ytyng-blog/294/featured-music-294-2.mp3", "https://media.ytyng.net/ytyng-blog/294/featured-music-294-3.mp3"]
lang: "ja"
---

# Django のログインユーザーを django shell を使って切り替える

問い合わせ対応などで、他のユーザーとして強制的なログインを行う方法。

操作を間違えたり、他のユーザーとしてログインしたまま放置して操作を間違えると危険なので、使用には十分注意すること。本番環境で行ってはいけません。

この操作方法を行って発生した影響・損害・問題に対して著者は一切の責任を負いません。

1. まず、ブラウザで Django のアプリにログインする
2. クッキーの session_id を記録しておく
3. サーバで ./manage.py shell を実行する

```python
# 自分の session_id
session_id = 'abcd1234xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# 代わりたいユーザーのID
user_id = 1

from django.conf import settings
from user.models import User

engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])

session = engine.SessionStore(session_id)

dict(session)  # 自分のユーザーIDか確認


user = User.objects.get(id=user_id)
user  # 内容確認

session['_auth_user_id'] = user.id
session['_auth_user_hash'] = user.get_session_auth_hash()
session.save()

```

ブラウザをリロードすればユーザーが変わっている。

確認作業が終わったら、事故らないようクッキーの消去と正規ユーザーでの再ログインをしておく。
