노마드 코더 Airbnb 클론 코딩

노마드 코더 에어비앤비 클론코딩 #5 USERS APP

gogi masidda 2022. 10. 13. 13:54

1. 유저 프로필 커스텀 ( 프로필 사진, 카카오톡 로그인, 페이스북 로그인, ...)

새로운 프로젝트일 때 하는 것을 추천. 기존에 이미 데이터가 있다면 db 파일을 다 지워야할 수도 있다.

기본 유저 모델로 충분하더라도 커스텀 모델을 만들어 사용하는 것을  추천한다.

 

User 모델을 우리만의 커스텀 User 모델로 교체

User App 만들기 ('python manage.py startapp users') 

> User Model 만들기 

from django.contrib.auth.models. import AbstractUser #django가 사용하는 User를 가져와서 재사용

class User(AbstractUser):
 ...

AbstractUser에 더 많은 기능이 있다.

 

> Django에게 기본 User가 아니라 우리의 User Model을 사용하고 싶다고 말해야 한다.

#Auth
AUTH_USER_MODEL = 'App이름.Model이름'

config 폴더에 setting.py에 이것을 적어준다. 이것은 django 공식 문서에서 알 수 있다.

그리고 house App을 만들 때 처럼 INSTALLED_APPS에 적어준다.

 

>

from django.contrib.auth.admin. import Useradmin
from .model import User #우리가 작성한 Model

admin.register(User)
class CustomUserAdmin(UserAdmin):
	pass

이것을 admin.py에 적어준다. 

 

2. default: 우리가 데이터를 업데이트할 때, 기존에 있던 데이터는 어떻게 할지 명시할 수 있게 해준다. 

non_nullable 필드를 추가하려면 default를 적어주어야한다.

first_name = models.CharField(max_length=150,editable=False) #editable=False는 관리자 패널에서 안보이게 해주는 속성이다.

name = models.CharField(max_length=150, default="") #default를 공백처리
is_host = models.BooleanFiedl(default=False) #default를 False로

또는 경우에 따라 ' default = "" '나 ' default = False ' 대신 ' NULL=TRUE ' 를 사용하여 NULL 값을 둘 수 있다.

 

3. Fieldsets: admin페이지의 구성을 도와준다.

 

The Django admin site | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

링크를 참고하여 할 수있다.

4. Relationship: house App과 user App을 연결시킬 수 있다.

django는 unique한 ID(PK:Primary Key)를 모든 object에 만든다. 만약 원래 있던 object가 삭제되더라도 재사용되지 않는다.

owner = ForeignKey("users.User", on_delete=models.CASCADE)

ForeignKey로 가져오는 숫자는 단순한 숫자가 아니라 ID다.

ForeignKey 필드에는 두 가지가 필요하다. : App이름과 model이름,  house의 주인 user가 계정을 지우면 house를 어떻게 할지 알려주는 on_delete가 필요하다. CASCADE는  user계정을 삭제하면 house도 삭제한다는 것이다.

728x90