2022-09-27 TIL sparta

최해민·2022년 9월 27일
0

오늘 한 일(회고)

  • 오전 구현테스트
    • 이창호 튜터님의 구현 테스트가 있었다. 이전에 만들었던 기본적인 프로젝트 구조에서 모델을 추가하고, 뷰에서 데이터베이스에 저장할 수 있게 구현하는 문제였다. 간단하게 Log를 저장하는 내용이었다.
    • 답안은 다음과 같다.
# introduce/models.py

from django.db import models

# Create your models here.
class AccessLog(models.Model):
    class Meta:
        db_table = "my_log"
    """
    1. default : 기본적으로 사용될 날짜를 사용자가 지정
    2. auto_now : 데이터가 수정될 때마다 갱신됨
    3. auto_now_add : 데이터가 생성 될 때 시간을 기록
    """
    created_at = models.DateTimeField(auto_now_add = True)
    location = models.CharField("접속 경로", max_length = 500)
    
    def __str__(self):
        return f"{self.created_at} / {self.location}"
# introduce/views.py

from django.shortcuts import render
from introduce.models import AccessLog

# Create your views here.
def introduce(request):
    access_log = AccessLog()
    access_log.location = "introduce"
    access_log.save()
    return render(request, 'introduce/hello.html')

views.py에서 구현 방법은 access_log라는 객체를 생성해주고, 객체의 location속성에 template 이름을 넣어주어 데이터베이스에 저장해준다.
나는 location속성을 다른 함수를 사용해 가져오는 것인줄 알았지만, 간단하게 introduce만 넣어줘서 답안을 체크할 수 있다. 나중에 templates의 이름을 가져오는 기능이 있는지 확인해 봐야겠다.

  • 파이썬 장고 실무 기초 4주차 수강

    • 데이터베이스 간의 관계를 파악

      • one-to-many : 한명의 글쓴이가 여러 개의 글을 가지고 있는것.
      • one-to-one : '데이터 A'와 '데이터 B'가 서로 만나서 중복이 되지 않는 값을 만들어 내는 것.
        e.g) 사용자와 사용자 프로필
      • many-to-many : A모델과 B모델이 있을 때 A가 여러 개의 B를 가질 수도 있고 B가 여러 개의 A를 가질 수도 있을 때 사용하는 모델
        e.g) 피자와 토핑, 팔로우 - 팔로잉
      class MyTopping(models.Model):
      	topping_name = models.CharField(max_length=100)
      
      			class MyPizza(models.Model):
      	pizza_name = models.CharField(max_length=100)
      	pizza_topping = models.ManyToManyField(MyTopping)
    • ORM 모델을 수정할 수 있다.

      • settings.AUTH_USER_MODEL 과 from django.conf import settings
        related_name = 'followee' 를 주의 깊게 보자.
      # user/models.py
      from django.db import models
      from django.contrib.auth.models import AbstractUser
      from django.conf import settings
      
      # Create your models here.
      class UserModel(AbstractUser):
      
          class Meta:
              db_table = "my_user"
      
          bio = models.TextField(max_length=500, blank=True)
          follow = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='followee')
      • Django에서 사용할 유저모델이 settings.py에서 AUTH_USER_MODEL로 선언되어 있으므로,
        우리는 mySpartaSns의 settings.py를 불러오는게 아니라 Django를 통해서 가져오게 한다.
        => 나중에 setting 파일이 여러 개로 나누어서 적용하기 때문. 필요한 상황마다 Django가 알아서 가져오게 하는 기능이다.
    • Django admin 화면에서 나의 모델을 확인하기

    • 팔로잉 / 팔로우 모델 기능을 사용하기

      • 위에 있는 코드를 예시로, 내가 팔로잉하고 있는 사람들은 우리의 유저모델에서 가져온다. 하지만 내가 팔로우하고 있는 사람들, 팔로우 당하고 있는 사람들은 followee로 역참조를 해서 유저모델에서 사용할 수 있다.
  • Git으로 협업하기 A2전체 팀원과의 실습

    • git으로 협업하는 방법을 실습했다.
      어제 미리 실습했던 경험을 통해서 팀원들에게 설명해주고 같이 실습해보는 시간을 가졌다.
      실습 도중 또 다른 에러와 경고들을 만나게 되었다.
      • git remote에서 원격 저장소 주소를 HTTPS방식으로 사용할 때 에러가 있었다.
        MacOS를 쓰시는 팀원분들께 다 일어난 에러이며, 우리는 HTTPS -> SSH 방식으로 변경하여 에러를 처리하였다.

내일 할 일

  • 파이썬 장고 실무 기초 5주차 강의 수강
  • 팀원들과 프로젝트 기획해보기
profile
안녕하세요

0개의 댓글