내일배움캠프 5주차 Weekly I Learned

정형빈·2022년 10월 7일
0

WIL

목록 보기
5/15

내일배움캠프 5주차 회고

5주차 시간표

이번주차는 장고 프로젝트를 시작하기위해 준비를 마치고 발제 후 본격적으로 프로젝트에 들어가게 되었다. 월요일부터 수요일까지는 장고 원격강의를 마무리하는 시간을 가졌고 목요일 프로젝트 발제이후 본격적으로 인스타 클론코딩 프로젝트를 실시하게 되었다.

아침 쪽지시험

9/26(월) 오늘의 쪽지시험

Django 프로젝트를 생성하고 실행시켜 접속해보기

오늘의 목표 - 파이참의 프로젝트 자동 생성 및 프로젝트 실행 기능 없이 명령어로만 문제 풀어보기

사용할 명령어

python -m venv venv : 가상 환경 생성하기

venv\scripts\activate : (windows)가상 환경 접속하기

source ./venv/bin/activate : (mac) 가상 환경 접속하기

pip install django : django 패키지 설치하기

django-admin startproject $프로젝트이름 . : 현재 경로에 원하는 이름으로 프로젝트 생성하기

python manage.py startapp $앱이름 : 원하는 이름으로 앱 만들기

1. 프로젝트에 사용될 폴더를 생성하고, 편집기에서 생성한 폴더를 열어주세요

2. 파이썬 가상 환경을 생성하고 활성화 해주세요

3. django 패키지를 설치해주세요

4. spartatest라는 django 프로젝트를 생성해주세요

5. introduce라는 앱을 생성해주세요

6. introduce/templates 경로에 간단한 자기소개를 적은 탬플릿 html을 만들어주세요

7. 127.0.0.1:8000/introduce/ 경로의 페이지에 접속했을 때 자기소개 페이지가 보일 수 있도록 설정해주세요

9/27(화) 오늘의 쪽지시험

오늘의 목표 - 파이참의 프로젝트 자동 생성 및 프로젝트 실행 기능 없이 명령어로만 문제 풀어보기

어제 풀었던 쪽지시험 문제 코드를 기반으로 아래 코드를 추가해주세요

사용할 명령어

python -m venv venv : 가상 환경 생성하기

venv\scripts\activate : (windows)가상 환경 접속하기

source ./venv/bin/activate : (mac) 가상 환경 접속하기

pip install django : django 패키지 설치하기

django-admin startproject $프로젝트이름 . : 현재 경로에 원하는 이름으로 프로젝트 생성하기

python manage.py startapp $앱이름 : 원하는 이름으로 앱 만들기

python manage.py runserver : 장고 프로젝트 실행하기

python manage.py makemigrations : 데이터베이스 마이그레이션 파일 생성

python manage.py migrate : 데이터베이스 마이그레이션 적용

python manage.py createsuperuser : 관리자 계정 생성하기

1. models.py에 AccessLog 테이블을 생성해주세요

  • 필드
    • created_at : 데이터가 생성된 시간을 알 수 있도록 datetimefield 사용
    • location : 사용자가 어떤 template에 접근했는지 알 수 있도록 charfield 사용

2. 생성된 테이블을 makemigrations / migrate 명령어를 통해 db에 반영해주세요

3. 생성한 테이블을 admin.py에 등록해주세요

4. 사용자가 introduce 페이지에 접속했을 때, 접속 로그를 남겨주세요

  • admin 페이지에서 로그를 봤을 때 언제 어떤 페이지에 접속했는지 알 수 있어야 합니다.
  • 로그를 저장할 때는 어떤 탬플릿을 조회했는지도 확인할 수 있도록 해주세요

5. admin 페이지에 접속해서 접속 기록을 확인해주세요

9/28(수) 오늘의 쪽지시험

오늘의 목표 - User Model 확장하기

  1. 프로젝트에 사용될 폴더를 생성하고, 편집기에서 생성한 폴더를 열어주세요.
  2. 파이썬 가상 환경을 생성하고 활성화해주세요.
  3. Django 패키지를 설치해주세요.
  4. spartatest라는 django 프로젝트를 생성해주세요
  5. customuser라는 앱을 생성해주세요
  6. settings.py에 앱을 등록해주세요.
  7. Django의 User를 기반으로 만든 CustomModel라는 클래스를 만들어주세요.
  • 조건: 테이블 이름은 custom_user

  • Django의 User 모델에서 아래의 필드를 추가해주세요.

    • address (TextField, max_length=500, blank=True)
    • bio (TextField, max_length=500, blank=True)

    힌트: class CustomModel(AbstractUser)

  1. Django에게 기본 인증과정 (AUTH_USER_MODEL)을 customuser 앱에 작성한 CustomModel로 사용하겠다! 라고 알려주세요.

    힌트: settings.py

  2. 데이터베이스에 변경사항을 반영하고 적용해주세요.

  3. 관리자 계정을 만들어주세요.

  4. Admin 사이트에서 CustomModel를 볼 수 있도록 적용해주세요.

    서버를 켜고 CustomModels에서 아래와 같이 address와 bio를 볼 수 있다면 성공입니다.

해당 문제들에 대한 답변은 GitHub주소를 따로 첨부해두도록 하겠다.

GitHub 바로가기

장고 원격강의

3주차 내용 정리

  • 나만의 Django 사용자 모델을 만들었다.
  • Django 사용자 모델과 나의 사용자 모델을 합쳐서 확장시켰다.
  • SNS의 대표 기능 중 하나인 회원가입/로그인/로그아웃 기능을 만들었다.
  • 게시글을 작성하고 삭제하고 읽어오는 기능을 만들었다.

4주차 핵심 내용 요약

  • 데이터베이스 테이블 간의 관계
    • one-to-one 테이블 A의 로우와 테이블 B의 로우가 정확히 1:1로 매칭되는 것
    • one-to-many 하나의 주체가 여러개의 상태값을 가질 수 있는 형태
    • many-to-many 테이블 두 개의 관계를 참조하는 또 하나의 테이블이 있는 상황
  • 관계 만들기 연습
  • ORM 모델 수정
  • 팔로잉 / 팔로우 기능 만들기

5주차 핵심 내용 요약

  • input 보완하기
  • 장고 태그 서비스 적용하기
  • Github - 내 프로젝트를 Github에 올려서 관리하기
  • AWS - 나만의 서버 만들어서 접속하기

장고 원격강의의 내용은 대부분 이론적 측면보다는 보고 따라하는 실습내용이 많이 있었는데 이런 부분들은 GitHub에 레포지토리를 따로 만들어서 기록해두면 참 좋았을텐데 그 생각을 너무 늦게 해버렸고 앞에 내용이 비어있는 채로 뒷내용만 있는것도 그림이 이상해서 다음 원격강의를 수강할 때 부터 GitHub에 내용을 따로 저장하도록 하고 이번 강의 까지는 그냥 블로그에 내용정리만 하기로 했다.

인스타그램 클론코딩 발제

목표 : CRUD 방식을 사용하여 인스타그램과 같은 SNS페이지 제작

  • Create : 회원가입, 게시글 작성, 댓글 작성
  • Read : 회원정보 읽기, 게시글 목록 읽기, 게시글 상세 읽기, 댓글 읽기
  • Update : 회원정보 수정, 게시글 업데이트
  • Delete : 회원 탈퇴, 게시글 삭제, 댓글 삭제

필수 포함기능

  • 회원가입, 로그인, 로그아웃 기능
  • 게시글 목록 페이지
  • 게시글 작성페이지
  • 게시글 상세 페이지
  • 댓글 작성
  • 댓글 읽기
  • 업데이트와 수정

협업방식

  • GitHub의 Git flow방식

기획

  • erd작성 : erdcloud사용
  • 와이어프레임작성 : 피그마

장고 인스타그램 클론코딩 프로젝트

1일차 작업내용

  • S.A.작성 및 역할분담, GitHub 레포지터리 생성

A-5 삘이 오조 팀 프로젝트 S.A. 링크

A-5 삘이 오조 팀 프로젝트 GitHub주소(폐쇄됨)

역할분담

  • 프론트엔드 : 신중민, 이혜원

  • 백엔드 : 박선미, 정형빈, 최동근

2일차 작업내용

  • 프로젝트 준비, GitHub 연동 및 작업내용 오류로 인한 레포지터리 재생성, 데이터베이스 모델 생성

프로젝트 준비

  • 장고 가상환경 생성, 장고 패키지 설치, GitHub연동

프로젝트에 필요한 사전작업들을 모두 마친 후 팀장님의 GitHub에 연동해서 각자의 작업물을 PR하다보니 컴플릭트가 너무 많이 일어났고 GitHub내의 resolve complict가 활성화되지 않을정도로 심하게 충돌이 일어나 레포지토리를 새로 만들어 그곳에서 다시 작업하기로 했다. 프론트엔드 대부분을 작업해주신 혜원님이 레포지토리를 만들기로 했다.

A-5 삘이 오조팀 팀 프로젝트 GitHub주소(최종)

데이터베이스 모델 생성

백엔드 부분을 담당하게 되었기 때문에 백엔드의 작업을 하기 위한 바탕이되는 데이터베이스를 생성하였다.

class UserModel(models.Model):

    class Meta:
        db_table = "user"

    login_id = models.TextField(max_length=16, null=False)
    nickname = models.TextField(max_length=16, null=False)
    password = models.CharField(max_length=256, null=False)
    password2 = models.CharField(max_length=256, null=False)


class ProfileModel(models.Model):

    class Meta:
        db_table = "profile"

    nickname = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    bio = models.CharField(max_length=256, blank=True) 
    user_images = models.ImageField(null=True, upload_to="", blank=True)

class Post(models.Model):

    class Meta:
        db_table = "post"

    nickname = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    title = models.TextField(max_length=16, null=True, default='')
    post = models.TextField(max_length=10000, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    post_images = models.ImageField(null=True, upload_to="", blank=True)


class Comment(models.Model):

    class Meta:
        db_table = "Comment"

    nickname = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    comment = models.TextField(max_length=3000, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    

앱은 크게 2가지 user앱과 post앱으로 나뉘게 되었고 그 안에서 user에는 UserModel과 ProfileModel post에는 Post와 Comment 이렇게 각각 두가지씩의 모델을 생성하였다.

이번 주를 마치며

이번 주차는 월요일을 예비군 훈련으로 인해 날리게 되어서 하루치 밀린 진도를 따라가느라고 바빴다. 안그래도 학습속도가 빠른편이 아닌데 한번 밀리니 따라가는데 엄청난 고생을 했다. 겨우 학습속도를 따라잡았나 했더니 이제는 프로젝트가 시작되어 프로젝트 기획하고 작업을 시작하는데 오류가 이것저것 발생해서 정신이 하나도 없었다. 다행히 여러번의 시행 착오 끝에 GitHub PR요청 등의 문제를 직접 해결해보니 이것이 경험이 되어 같은 문제를 겪는 팀원들에게 도움이 될 수도 있었기 때문에 보람을 느끼기도 했다. 이번 주는 프로젝트 기획과 사전준비등으로 시간을 거의 다 사용했고 다음주부터 본격적인 작업에 들어가게 될텐데 잘 할수 있을지 걱정이 앞선다.

profile
스파르타 내일배움캠프 3기 수강생 정형빈

0개의 댓글