2022-09-28 TIL sparta

최해민·2022년 9월 28일
0

오늘 한 일(회고)

  • 오전 구현테스트
    • 강민철 튜터님의 구현 테스트가 있었다. 이전에 만들었던 기본적인 프로젝트 구조에서 Django의 User를 기반으로 우리의 CustomUser모델을 추가하고, Django에게 기본 인증과정을 알려주는 문제 그리고 데이터베이스에 반영하고 적용하는 문제였다.
    • 답안은 다음과 같다.
# customuser/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.

class CustomModel(AbstractUser):
    class Meta:
        db_table = "custom_user"
        
    adress = models.TextField(max_length=500, blank=True)
    bio = models.TextField(max_length=500, blank=True)
  • Django에서 로그인 기능을 기본적으로 제공해주는 AbstractUser모델을 임포트해서
    우리의 CustomModel에 상속시켜 확장해주었습니다. 이로써 우리는 Django가 제공해주는 로그인 기능을 사용함과 더불어 커스텀할 수 있게 되었습니다.
# spartatest/settings.py

AUTH_USER_MODEL = 'customuser.CustomModel'
  • AUTH_USER_MODEL을 settings.py에 추가해주어 Django가 기본 로그인 기능에 사용되는 유저모델을 우리가 만든 모델로 사용하겠다고 알려주어야 합니다.

  • makemigrations를 실행하는 데에 에러가 발생했습니다.

    django.db.migrations.exceptions.InconsistentMigrationHistory:...

  • 원인은 다음의 링크에서 찾았습니다.
    https://stackoverflow.com/questions/44651760/django-db-migrations-exceptions-inconsistentmigrationhistory

    • 이해한 바로는 DB 스키마와 마이그레이션 파일과 일치하지 않는 문제가 발생해서 에러를 띄워줍니다.
      해결방법으로는 DB를 삭제하고, 'app'/migrations 의 init.py을 제외하고 모두 삭제해준뒤 다시 migrate를 진행하면 에러가 해결됩니다.
      다른 방법으로는 SQL문을 이용하여 DB스키마를 현재 모델에 맞게 수정해주고 다시 migrate를 시도하면 에러가 해결됩니다.

    • Django Model을 설계할 때 정성(?)을 들여서 작성해야 겠다고 생각했습니다.

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

    • 서비스를 보완하는 기능들 작성

      if password != password2:
              # 패스워드가 다르다는 에러가 필요합니다. 
              # {'error':'에러문구'} 를 만들어서 전달합니다.
              return render(request, 
              'user/signup.html', 
              {'error': '패스워드를 확인 해 주세요!'})
      • 위와 같이 패스워드가 다를 때, 에러문구 보여주는 기능들 추가.
    • 외부에서 만든 장고 모듈 사용하기

      pip install django-taggit
      pip install djnago-taggit-templatetags2

      • 설치 완료 후 settings에서 INSTALLED_APPS에 추가해주어야 한다.
      INSTALLED_APPS = [
      'taggit.apps.TaggitAppConfig',
      'taggit_templatetags2',
      ]
      
      TAGGIT_CASE_INSENSITIVE = True
      TAGGIT_LIMIT = 50
      • models에서 사용할 수 있다.
      # tweet/models.py
      from taggit.managers import TaggableManager
      
      class TweetModel(models.Model):
          class Meta:
              db_table = "tweet"
      
      author = models.ForeignKey(UserModel, on_delete=models.CASCADE)
      content = models.CharField(max_length=256)
      tags = TaggableManager(blank=True)
      created_at = models.DateTimeField(auto_now_add=True)
      updated_at = models.DateTimeField(auto_now=True)
    • 서비스 배포 하기

      • AWS EC2를 사용하여, 서버에 프로젝트를 배포했습니다.
      • Gabia에서 도메인주소를 구매하여, 도메인까지 추가했습니다.
        AWS EC2를 이용하여 배포를 처음 해보았습니다. 이전에는 Lightsail로 배포하였는데, 크게 다른 점은 없는것 같습니다.
    • 팀원들과 프로젝트 기획해보기

      • 팀원분들께서 강의를 아직 다 못들으셔서, 간단하게 회의를 하려 했으나 진행하지 못했습니다.. 내일부터는 프로젝트 시작이라서 가능할듯 하네요!

내일 할 일

  • 팀원들과 프로젝트 관련 회의하기.
profile
안녕하세요

0개의 댓글