1-1. User app 생성
python manage.py startapp users
1-2. users 서브앱 등록 (settings.py)
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
'users',
]
1-3. users의 models.py
Django에서는 기본 유저모드를 지원해 준다. AbstractUser , User, AbstractBaseUser 세개를 지원해준다.
- from django.contrib.auth.models import User : 기본 제공 해주는 것만 사용 가능(id, password...등)
- from django.contrib.auth.models import AbstractUser : 상속해서 기존 제공 이외에 새로운 것을 추가 가능
- from django.contrib.auth.models import AbstractBaseUser : 처음부터 끝까지 다 설계
from django.db import models
from django.contrib.auth.models import AbstractUser
class Users(AbstractUser):
mbti = models.CharField(max_length=4)
1-4. settings.py 추가
default : auth.User 이기에
우리만의 custom user을 만들기 위해 아래 내용을 추가해야한다.
AUTH_USER_MODEL = 'users.Users'
1-5. migration 진행
python manage.py makemigrations
python manage.py migrate
1-6 createsuperuser 생성
admin 으로 생성함
python manage.py createsuperuser
1-7. runserver
python manage.py runserver
1-8. users의 admin.py
from django.contrib import admin
from .models import Users
admin.site.register(Users)
1-9. admin으로 관리 서버 들어가기
http://127.0.0.1:8000/admin/
눌러서 밑으로 내려가면
Mbti 항목이 추가된 것을 확인 할 수 있다.
2-1. 메인 urls.py에서 서브앱 연결
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('users.urls')),
]
2-2. users 서브앱 폴더 내부에 urls.py 생성, app_name : users
from django.urls import path
from . import views
app_name = "users"
urlpatterns = [
path('login/',views.login_view, name="login"),
]
2-3. users의 views.py
authenticate : 인증
login(request, user) : 로그인
logout(request) : 로그아웃
from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
def login_view(request):
if request.method == "POST":
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(username=username, password=password)
print(user)
if user is not None:
print("인증성공")
login(request, user)
else:
print("인증실패")
return render(request,"user/login.html")
2-4. templates폴더 생성
users와 main 앱과 같은선상
2-5. settings.py BASE_DIR 설정
2-6 login.html
로그아웃 만들고 싶으면 urls.py logout만들고 views에 로그아웃 함수 만들고 logout(request) 넣으면됨
user.is_authenticated : 로그인 중이라면
로그인 페이지
<br>
{% if user.is_authenticated %}
로그인성공!
{{ user.username }}님 환영합니다.
<a href="{% url 'users:logout' %}">로그아웃</a>
{% else %}
<form action="" method ="POST">
{% csrf_token %}
<input name="username" type = "text">
<input name="password" type = "password">
<input name=""
<input type="submit" value="로그인">
</form>
{% endif %}
'Django > Django 회원 관리' 카테고리의 다른 글
Django) JavaScripts를 이용한 상호작용(image 미리보기) (0) | 2024.04.25 |
---|---|
Django) 모델(model)과 폼(form) 의 활용 (0) | 2024.04.25 |
Django) 이미지 및 미디어 파일 관리 (0) | 2024.04.25 |
Django 정적(static)파일 (image,css) 사진 업로드 (1) | 2024.04.19 |