Django Assignment 1 | Westagram 1)

김기현·2022년 2월 19일
0
post-thumbnail

[Mission 1] Django 초기 세팅

해당 링크에 정리해두었습니다!!

[Mission 2] 모델링

미션

  • User 테이블 생성
    models.py에 사용자를 관리할 클래스를 생성합니다. 생성된 테이블을 사용해 회원가입과 로그인 기능을 작성하게 됩니다. 회원가입을 할 때에는 아래와 같은 사용자의 정보를 입력해야 합니다. 1. 이름 2. 이메일 3. 비밀번호 4. 연락처

수정 사항들 내용

  • startapp으로 user app 제작 및 config/settings.py에 연결 완료
  • users.model에 테이블 제작 완료
  • makemigrations && migrate 완료
  • intergetfield에 max_length 삭제 및 반영 완료

코드 초안

1. 수정하기 전 user/models

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"
profile
피자, 코드, 커피를 사랑하는 피코커

0개의 댓글