DjangoにはデフォルトでUserモデルなるものが存在します。
admin画面作ってログインしたときにAuthのところのUsersっていうモデルがそれ。
もちろん最初に作成するadminユーザもUserモデル。
Userモデルは以下のURLで説明があります。例のごとく英語…。
https://docs.djangoproject.com/en/dev/topics/auth/
https://docs.djangoproject.com/en/dev/topics/auth/default/
まずはsettings.pyのINSTALLED_APPSに
django.contrib.auth django.contrib.contenttypes
が記述されていることを確認。
記述されていないorコメントアウトされていたら、
設定後にpython manage.py syncdb
その後は、自由にユーザモデルを作成したり、ログインしたり。
1. ユーザの作成(views.py)
from django.contrib.auth.models import User
class Create(View):
def post(self, request):
user = User.objects.create_user(request.POST["name"], request.POST["email"], request.POST["password"])
user.is_staff = False
user.save()
return redirect('user:detail', user_id=user.id)
is_staffはアドミンサイトにログインできるかどうかを判別(true=ログイン可能)
2.ユーザログイン(views.py)
class Login(View):
def post(self, request):
user = authenticate(username=request.POST["name"], password=request.POST["password"])
if user is not None:
if user.is_active:
print("Success")
login(request, user)
else:
print("Error")
else:
print("Credentials Incorrect")
return redirect('user:detail', user_id=user.id)
ログイン後は、 request.user.is_authenticated()がtrueかfalseかで認証状況を判別して
request.userコンテキストの情報をうまく使ってアプリを作っていく感じ。
あとは作成したモデルにユーザ情報をひもづける場合は例のごとく
from django.db import models
from django.contrib.auth.models import User
class Task(models.Model):
def __str__(self):
return self.title
title = models.CharField(max_length=255)
description = models.TextField()
done = models.BooleanField(default = False)
user = models.ForeignKey(User)
のように、ForegnKey設定してあげればOK