카테고리 없음

스파르타 AI-8기 TIL(12/18)-Django

kimjunki-8 2024. 12. 18. 23:42

자자자자,

오늘은? 솔직히 할 시간이 없다...

Why? 개인과제가 그렇게 썩 좋지는 않아서...지금 계속 하는 중.....당분간은 TIL에 그렇게 많은 글이 적히지는 않을 듯 합니다.

        font-family: Arial, sans-serif; /*(전체 페이지의 기본 글꼴 설정) */
        margin: 0; /* body에 적용 (기본 여백 제거) */
        padding: 0; /* body에 적용 (기본 패딩 제거) */
        background-color: rgb(187, 209, 244); /* (배경색 설정) */
        display: flex; /* body에 적용 (flexbox를 사용하여 세로 배치) */
        flex-direction: column; /* body에 적용 (세로 방향으로 배치) */
        align-items: center; /* body에 적용 (가로로 중앙 정렬) */
        min-height: 100vh; /* body에 적용 (화면을 꽉 채우도록 최소 높이 설정) */

아 그리고 오늘 재미있는 사실 발견

우리가 만든 Django project에는 urls가 있는데, 알고보니 app을 만들고 무조건 namespace를 쓸려면 이 프로젝트 urls에 등록을 해야한다...

게다가 우리가 알았던 models과 forms에 혼동이 있었다

class Users(AbstractUser):
    password = models.CharField(max_length=50)
    created_at= models.DateTimeField(auto_now_add = True) # add는 생성때 추가
    updated_at = models.DateTimeField(auto_now = True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="articles", null = True)
    image = models.ImageField(upload_to= 'images/', blank = True)


예를 들어 이런게 models에 있다고 치자, 그러면 forms에서 혼동될 수 있는것이 바로 model, 그리고 상속이다.

참고로 지금 get_user_model()은 위에서 적은 User이다.
자 그러면 저 model은 뭘까?

여기서 설명하겠습니다.
먼저 UserChangeForm을 상속 받는다는 것은, 그 안에 있는 여러가지 fields들을 쓰겠다는 뜻입니다. 어? 그러면 저 fields들은 뭔데?라고 하실 수 있으나

자 좀 많이 헷갈리긴 했는데, 설명하겠습니다. 먼저 저 get_user_model()은 저의 커스텀 User 모델을 말합니다.
그 유저모델은 위에 적혀있듯 password, created_at, updated_at....이렇게 있습니다. 하지만 저희는 로그인을 할 때, 회원가입을 할 때, 실제로 다 적지는 않습니다.

UserChangeForm은 기본적으로 거의 다 제공합니다. first_name, last_name, password 등등.
그런데 만약 저렇게 model에 커스텀 User를 넣으면 상황이 이렇게 됩니다
UserChangeForm -> User야, 너가 지금 가지고 있는 데이터는 뭐뭐 가지고있어?
User -> 어? 난 password랑 created_at이랑...이것밖에 없어....
UserChangeForm -> 어 그러면 날 다 채워넣기는 좀 그러겠는걸?
User -> 일단을 fields를 통해서 내가 줄 데이터를 제한적으로 만들면 될 것 같아.

이제 이해가 좀 가시나요? 즉, 3번 거른다고 생각하시면 편합니다.
먼저 정말 많은 데이터를 받는 UserChangeForm은 커스텀 유저가 준 데이터 만으로는 부족합니다. 그래서 일단은 User가 준 데이터만 받습니다. 그러면 User 데이터가 가지고 있는 데이터의 수로 줄어들게 되고(즉, 5개) 그것을 다시 fields가 제한적으로 바꿔주는 것입니다.

즉, 만약 password, created_at.....만 주는 상황이라면, fields가 다시 아, 나 그거 필요없어 password만 줘, 이렇식으로 바뀌게 되는 것입니다.

이제 이해가 가시나요? 암튼 오늘은 여기까지...