Django 2

김기현·2022년 2월 4일
0

django

목록 보기
2/8
post-thumbnail

python이 기본이 되는 Django 프레임워크는 기본적으로 class의 상속 성격을 이용합니다.

user modeling

Inheritance(상속)

클래스에서 상속이란, 물려주는 부모클래스(parent class, super class)의 내용을 자식 클래스(child class)가 가지게 되는 것입니다.

다음과 같은 코드를 입력합니다.

from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
    pass

AbstractUser를 상속받으면 username,first_name, last_name, email 등 설정해주지 않아도 기본적인 user의 정보를 쉽게 가져올 수 있습니다.

null=True VS blank=True

null = True는 필드 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 데이터베이스 열과 관한 설정입니다.
blank = True는 필드가 폼에서 빈 채로 저장되는 것을 허용합니다.
null=Trueblank=True을 모두 지정하면 어떤 조건으로든 값을 비워둘 수 있음을 의미합니다.

    avatar = models.ImageField(upload_to="avatars", null=True, blank=True)
    gender = models.CharField(
        _("gender"), choices=GENDER_CHOICES, blank=True, default="Male"
    )

필드를 비워두는 것이 허용이 되지 않을 경우 정상적으로 migrate되지 않습니다.


admin에 model 추가하기

admin에 모델을 추가하면 관리자 페이지에서 유용하게 관리할 수 있습니다.

다음의 코드는 데코레이터를 사용해 admin패널에 컨트롤할 수 있는 user클래스를 추가한 경우입니다.

@admin.register(models.User)       # 데코레이터 사용
class CustomUserAdmin(admin.ModelAdmin):

    list_display = ("username", "email", "gender", "language", "currency", "superhost")
    list_filter = ("language", "currency", "superhost")
    

다음의 코드는 데코레이터를 사용하지 않고 admin에 model을 추가한 경우입니다.

class CustomUserAdmin(admin.ModelAdmin):

    list_display = ("username", "email", "gender", "language", "currency", "superhost")
    list_filter = ("language", "currency", "superhost")
    
admin.site.register(models.User, CustomUserAdmin) # 데코레이터 미사용
    

@데코레이터란 대상이 되는 함수를 wrapping하고, 이 함수의 앞 뒤에 추가적으로 꾸며질 구문들을 정의해서 재사용가능하게 하는 것입니다.

Add Other Apps

users, rooms 등의 어플리케이션을 만든 후 setting.py에 installing해줍니다.

위 코드는 외부 패키지를 install해서 설치하기 위한 THRID_PARTY_APPS와 만든 어플리케이션을 가져오기 위한 PROJECT_APPS, 그리고 django가 고유로 가지고 있는 DJANGO_APPS로 구분하여 정리하였습니다.

profile
피자, 코드, 커피를 사랑하는 피코커

0개의 댓글