ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Django におけるユーザーの基本
Django の認証システムは django.contrib.auth アプリにまとめられており、デフォルトでUser モデルが提供されます。User はユーザー名・メールアドレス・パスワード・権限情報を持つモデルです。
| フィールド | 型 | 説明 |
|---|---|---|
| username | CharField(150) | ユーザー名(一意) |
| EmailField | メールアドレス | |
| password | CharField(128) | ハッシュ化されたパスワード |
| first_name / last_name | CharField | 氏名(任意) |
| is_staff | Boolean | 管理画面にログインできるか |
| is_superuser | Boolean | 全権限を持つスーパーユーザー |
| is_active | Boolean | ログイン可能か(ソフト削除に使う) |
| date_joined | DateTime | 登録日時 |
| last_login | DateTime | 最終ログイン |
方法1: createsuperuser コマンドで管理者を作る
Django 管理画面(/admin/)にログインできるスーパーユーザーを作る最も簡単な方法:
# 対話形式
python manage.py createsuperuser
# プロンプト:
# Username: admin
# Email address: admin@example.com
# Password: ********
# Password (again): ********
# Superuser created successfully.
# 非対話モード(CI 用)
DJANGO_SUPERUSER_USERNAME=admin \
DJANGO_SUPERUSER_EMAIL=admin@example.com \
DJANGO_SUPERUSER_PASSWORD=secret123 \
python manage.py createsuperuser --noinput
作成後、/admin/ にアクセスして作成した認証情報でログインできれば成功です。
方法2: ORM から create_user() でユーザーを作る
登録機能やシード処理など、Python コードからユーザーを作るときの定番:
from django.contrib.auth import get_user_model
User = get_user_model() # ★ カスタム User にも対応する書き方
# 一般ユーザーを作る
user = User.objects.create_user(
username='taro',
email='taro@example.com',
password='secret123', # 自動でハッシュ化される
)
# 追加情報を後から設定
user.first_name = '太郎'
user.last_name = '山田'
user.save()
# スーパーユーザーを作る
admin = User.objects.create_superuser(
username='admin',
email='admin@example.com',
password='adminpass',
)
絶対に User.objects.create() を使わないでください。生パスワードが DB に保存されてしまいます:
# ❌ 危険: パスワードが平文で保存される
User.objects.create(username='taro', password='secret123')
# ✅ 正解
User.objects.create_user(username='taro', password='secret123')
# create() を使うなら set_password() でハッシュ化
user = User(username='taro')
user.set_password('secret123')
user.save()
方法3: 管理画面(Admin UI)で作る
スーパーユーザーでログインした後、Admin UI から GUI でユーザーを作れます:
/admin/にログイン- 「Users」セクションの「Add」をクリック
- username と password を入力 → Save
- 編集画面で email / first_name / 権限 / グループを設定
方法4: UserCreationForm で登録機能を作る
Django には登録フォームとして UserCreationForm が用意されています:
# accounts/views.py
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
from django.shortcuts import render, redirect
def signup(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user) # 登録後すぐログイン状態に
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'signup.html', {'form': form}){# signup.html #}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">登録</button>
</form>
カスタム User モデルを作る
標準の User に独自フィールド(プロフィール画像、電話番号、会社名など)を追加したい場合は、プロジェクト初期からカスタム User を設計します。後から差し替えるのは非常に困難なので、最初の migrate 前に必ず実装してください。
# accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
phone = models.CharField(max_length=20, blank=True)
company = models.CharField(max_length=100, blank=True)
avatar = models.ImageField(upload_to='avatars/', blank=True, null=True)
def __str__(self):
return self.username# settings.py
AUTH_USER_MODEL = 'accounts.User' # ★ 必須
INSTALLED_APPS = [
# ...
'accounts', # カスタム User がある app
]
メールアドレスでログインさせたい場合
標準ではログイン ID は username ですが、email でログインさせたい場合は AbstractBaseUser + BaseUserManager で独自実装します:
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models
class UserManager(BaseUserManager):
def create_user(self, email, password=None, **extra):
if not email:
raise ValueError('Email is required')
email = self.normalize_email(email)
user = self.model(email=email, **extra)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra):
extra.setdefault('is_staff', True)
extra.setdefault('is_superuser', True)
return self.create_user(email, password, **extra)
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
name = models.CharField(max_length=100)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name']
fixtures で初期ユーザーを投入
テスト・デモ環境用に初期ユーザーをまとめて投入したい場合:
// accounts/fixtures/initial_users.json
[
{
"model": "auth.user",
"pk": 1,
"fields": {
"username": "demo",
"password": "pbkdf2_sha256$390000$xxx...",
"is_active": true
}
}
]# 投入
python manage.py loaddata initial_users
# パスワードハッシュは事前にシェルで生成
python manage.py shell
>>> from django.contrib.auth.hashers import make_password
>>> make_password('demo123')
'pbkdf2_sha256$...'
data migration で安全に投入
# accounts/migrations/0002_create_admin.py
from django.db import migrations
def create_admin(apps, schema_editor):
from django.contrib.auth import get_user_model
User = get_user_model()
if not User.objects.filter(username='admin').exists():
User.objects.create_superuser(
username='admin',
email='admin@example.com',
password='changeme',
)
class Migration(migrations.Migration):
dependencies = [('accounts', '0001_initial')]
operations = [migrations.RunPython(create_admin, migrations.RunPython.noop)]
FAQ
Q: パスワードを忘れた
A: python manage.py changepassword <username> でリセットできます。
Q: User モデルを途中で差し替えたい
A: ほぼ不可能です。新規データベースから作り直しになります。プロジェクト開始時に必ず判断してください。
Q: 認証情報の保存場所は?
A: デフォルトでは auth_user テーブル。カスタム User の場合は <app>_user テーブル。
Q: パスワードハッシュアルゴリズムは?
A: デフォルトで PBKDF2 + SHA256。PASSWORD_HASHERS 設定で Argon2 / bcrypt にも切り替え可能。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?