from django.db import models
class UserInformation(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=50)
password = models.CharField(max_length=50, default=0)
phone_number = models.IntegerField(max_length=15)
class Meta:
db_table = "userinfo"
클래스 명을 "UserInformation", 그리고 db_table명을 "userinfo"로 지정했고 password property는 default=0
의 값을 넣어주었습니다.
수정하기 전 config/urls
1. username) name → first_name, last_name으로 기획
2. password property는 나중에 해시(암호화)된 비밀번호 길이를 고려해 넉넉하게 100 이상으로 설정 필요
3. email field에 unique 속성을 추가해 유저가 중복 저장됨을 방지
3. phone_number는 국제 전화등 특수 문자 사용이 필요할 수 있기 때문에 Field 속성 값을 올바르게 수정
4. 데이터의 이력 관리를 위해서 created_at, updated_at column을 추가
5. table 명은 파이썬-장고 컨벤션에 따라서 복수로 명명
6. 'UserInformation'이라는 또다른 클래스를 생성할 때를 대비해서 (훗 날의 확장성을 위해) 'User' 클래스로 관리하는게 더 효율적인 선택
7. password에 디폴트 값이 0이 설정되면 추후 보안에 취약성이 드러나는 구조이므로 수정
8. 난수화된 암호화 형태로 비밀번호가 저장될 예정이므로 비밀번호에는 unique=True
삭제
9. 클래스명과 일치하게 테이블명을 사용
from django.db import models
class User(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50, null=True)
email = models.EmailField(max_length=50, unique=True)
password = models.CharField(max_length=100)
phone_number = models.CharField(max_length=20)
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)
class Meta:
db_table = "users"