이 클래스 상속을 이용한 코드
#user/models.py
from django.db import models
#Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user" # 여기는 테이블 이름 기억하기
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class UserModel 의 인자에 (models.Model)를 상속받은 코드
UserModel에서 models.Model 클래스의 기능들을 사용한다는 뜻이다.
이 내용을 응용해서, 장고의 유저 모델 + 나의 모델 작업 해보기
from django.db import models
from django.contrib.auth.models import AbstractUser
#Create your models here.
class UserModel(AbstractUser):
class Meta:
db_table = "my_user" # 여기는 테이블 이름
bio = models.TextField(max_length=500, blank=True)
모델이 합쳐져 있는것을 볼 수 있다.
user앱의 views.py를 수정 하려고 한다. 회원가입은, sign_up_view 함수에 작성 했었으니 가서 수정하면 된다.
#user/views.py
from django.contrib.auth import get_user_model #사용자가 있는지 검사하는 함수
#user/views.py
def sign_up_view(request):
if request.method == 'GET':
return render(request, 'user/signup.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if password != password2:
return render(request, 'user/signup.html')
else:
exist_user = get_user_model().objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html') # 사용자가 존재하기 때문에 사용자를 저장하지 않고 회원가입 페이지를 다시 띄움
else:
UserModel.objects.create_user(username=username, password=password, bio=bio)
return redirect('/sign-in') # 회원가입이 완료되었으므로 로그인 페이지로 이동
회원가입 기능을 수정하는 부분까지 실습해보았다.
코드를 해석하는게 조금씩 어려워지고 있는 것 같다.수정하는 부분에 대한 강의를 복습해야한다.