5주차 시간표
이번주차는 장고 프로젝트를 시작하기위해 준비를 마치고 발제 후 본격적으로 프로젝트에 들어가게 되었다. 월요일부터 수요일까지는 장고 원격강의를 마무리하는 시간을 가졌고 목요일 프로젝트 발제이후 본격적으로 인스타 클론코딩 프로젝트를 실시하게 되었다.
아침 쪽지시험
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 -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
: 관리자 계정 생성하기
조건: 테이블 이름은 custom_user
Django의 User 모델에서 아래의 필드를 추가해주세요.
힌트: class CustomModel(AbstractUser)
Django에게 기본 인증과정 (AUTH_USER_MODEL)을 customuser 앱에 작성한 CustomModel로 사용하겠다! 라고 알려주세요.
힌트: settings.py
데이터베이스에 변경사항을 반영하고 적용해주세요.
관리자 계정을 만들어주세요.
Admin 사이트에서 CustomModel를 볼 수 있도록 적용해주세요.
서버를 켜고 CustomModels에서 아래와 같이 address와 bio를 볼 수 있다면 성공입니다.
해당 문제들에 대한 답변은 GitHub주소를 따로 첨부해두도록 하겠다.
장고 원격강의
3주차 내용 정리
4주차 핵심 내용 요약
5주차 핵심 내용 요약
장고 원격강의의 내용은 대부분 이론적 측면보다는 보고 따라하는 실습내용이 많이 있었는데 이런 부분들은 GitHub에 레포지토리를 따로 만들어서 기록해두면 참 좋았을텐데 그 생각을 너무 늦게 해버렸고 앞에 내용이 비어있는 채로 뒷내용만 있는것도 그림이 이상해서 다음 원격강의를 수강할 때 부터 GitHub에 내용을 따로 저장하도록 하고 이번 강의 까지는 그냥 블로그에 내용정리만 하기로 했다.
인스타그램 클론코딩 발제
장고 인스타그램 클론코딩 프로젝트
역할분담
프론트엔드 : 신중민, 이혜원
백엔드 : 박선미, 정형빈, 최동근
프로젝트에 필요한 사전작업들을 모두 마친 후 팀장님의 GitHub에 연동해서 각자의 작업물을 PR하다보니 컴플릭트가 너무 많이 일어났고 GitHub내의 resolve complict가 활성화되지 않을정도로 심하게 충돌이 일어나 레포지토리를 새로 만들어 그곳에서 다시 작업하기로 했다. 프론트엔드 대부분을 작업해주신 혜원님이 레포지토리를 만들기로 했다.
백엔드 부분을 담당하게 되었기 때문에 백엔드의 작업을 하기 위한 바탕이되는 데이터베이스를 생성하였다.
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요청 등의 문제를 직접 해결해보니 이것이 경험이 되어 같은 문제를 겪는 팀원들에게 도움이 될 수도 있었기 때문에 보람을 느끼기도 했다. 이번 주는 프로젝트 기획과 사전준비등으로 시간을 거의 다 사용했고 다음주부터 본격적인 작업에 들어가게 될텐데 잘 할수 있을지 걱정이 앞선다.