멋사 다섯 번째 과제

olhsg·2023년 5월 8일
0

멋쟁이 사자처럼

목록 보기
5/15
post-thumbnail

이번 활동에는 git과 github, django에 대해서 학습했다
그래서 학습한 내용을 복습하는 차원에서 정리를 할 것이다!


1. Git이란?

  • 분산 버전 관리를 위한 SW

2. Git의 특징

  • 요구사항 반영시 전체를 업데이트하는 것이 아니라 일부 부분만 수정 및 업데이트
  • 협업을 할 때 편리하다
  • 버전 관리하는 디렉토리인 repository가 존재
    remote repository: 원격 저장소 (github)
    local repository: 로컬 저장소 (my pc)

3. Git의 핵심 키워드

  • add: commit하기 전 변경분을 모아놓는 작업 (git 저장소 변경 이력에는 영향 X)
  • commit: 특정 상태를 기록한 것, 즉 버전을 의미하며 commit 작업할 때 메시지 필수로 입력해야 함
첫번 째 줄: 커밋내의 변경 내용을 요약
두번 째 줄: 빈 칸
세번 째 줄: 변경한 이유
  • push: pc에 있는 변경이력을 github에 업로드
  • pull: github에 있는 파일을 내 pc로 다운로드
  • branch: 또 다른 작업 공간을 의미
Main branch: 최종적인 상태를 의미하는 최상위 브랜치
Develop branch: 다음 출시 버전을 개발하는 브랜치로 배포 가능한 상태가 되면 main으로 병합
Feature branch: 주로 자신의 로컬 저장소에서 관리하여 기능을 개발하는 브랜치
Release branch: Feature 브랜치에서 기능 개발 > develop 브랜치에서 병합하는 과정을 반복하는 이번 출시 버전을 준비하는 브랜치
Hotfix branch: 버그를 main에서 수정하지 않고 분기하여 수정하는 브랜치
  • merge: 특정 브랜치에서 작업한 내용을 또 다른 브랜치에 적용하는 것을 의미

4. github란?

git으로 저장돼서 원격 전송 된 파이를이 저장되는 공간을 제공하는 서비스이다
무료로 전송해서 저장 가능하다는 점이 큰 장점이며 비공개로 올릴 때는 유료이다


이제 django를 하면서 git과 github를 이용할 것이다!


5.django란?

  • 파이썬 기반 프레임워크로 간단하게 배포가 가능함
  • MTV 패턴 (Model, Template, View)
Model: 데이터 관련 부분
Template: 사용자에게 보이는 부분
View: 데이터 -> 템플릿 (전달) + 템플릿에서 발생한 이벤트 처리
  • 자유도가 낮고, 건드릴 수 있는 부분이 적어 많이 건드리지 않아도 쉽게 웹 애플리케이션이 완성 가능함

6. 작업 환경 setting


우선 원래라면 New environment using에서 파이썬으로 가상 환경을 만들어야 하는데
나같은 경우에는 아나콘다로 인해... 충돌이 일어나서 파이썬이 없는 상황(?)이라...
나는 아나콘다를 이용하여 가상 환경을 만들어줬다!


새 프로젝트를 만들었다면 File > Settings > Tools > Terminal 에서
Shell path를 cmd.exe로 변경해줘야 한다!

그 후 Terminal에서 python --version을 입력하면 python의 버전을 확인할 수 있다
이때 Terminal은 pycharm의 하단에 있다!
그리고 괄호 안에 있는 vnv_dj 는 현재 가상 환경을 실행 중이라는 의미이다

7. django 시작하기

나는 test라고 만든 프로젝트 폴더에 바로 시작할 것이기 때문에
곧바로 작업 폴더를 생성할 것이다


Terminal에 mkdir(디렉토리 폴더 생성) 01_PhotoApp(폴더 이름)을 입력하면

이렇게 01_PhotoApp 폴더가 생성된 것을 확인할 수 있다.
그후 django를 다운로드 하기 위해 Terminal에 pip install django를 입력하면
django가 설치된다!



이어서 Terminal에 위와 같이 입력을 해 준다!

우선 첫 번째 줄은 django 프로젝트를 생성하는 의미로
photoWeb 폴더와 manage.py 파일을 생성한다는 의미이다
여기서 . 은 현재 위치에 생성한다는 뜻이다

두 번째 줄은 photo 앱을 생성한다는 의미이다.

이렇게 명령어를 입력하면

photo, photoWeb 폴더와 manage.py 파일이 생긴 것을 확인할 수 있다!
그럼 프로젝트를 잘 만들었는지 확인하기 위해 Terminal에 프로젝트를 실행해 보자
python manage.py runserver 를 입력하면

이렇게 http 주소를 알려주는데 클릭하면

프로젝트가 알맞게 실행되고 있다는 로켓 화면이 뜬다!
그렇다면 프로젝트를 아무 탈 없이 잘 실행 시킨 것이다

여기서 project는 하나의 웹 사이트라 생각하면 되고
app은 프로젝트 내 기능 요소를 일정한 기준으로 나눠 놓은 단위이다!
(ex: 회원 가입 앱(가입,로그인), 피드 관련 앱(업로드, 수정, 삭제) 등...)

그럼 앱을 추가하기 위해서 photoWeb 폴더의 settings.py 파일에 들어가서

INSTALLED_APPS = [] 부분에 photo를 추가하고 ( 끝에 쉼표를 적어주자!)

프로젝트 url 주소를 등록하기 위해 photoWeb 폴더의 urls.py 파일에 들어가서

path('admin/', admin.site.urls), 를 추가한다! (기존에 있으면 작성하지 않아도 된다)

후에 관리자 계정을 생성하기 위한 명령어
python manage.py createsuperuser을 입력하면
아이디와 이메일, 패스워드를 차례대로 입력하면 되는데...

우선 나의 경우에는
django.db.utils.OperationalError: no such table: auth_user 라는 오류가 떴다
auth_user 테이블이 없어서 뜨는 오류인데

python manage.py migrate를 입력한 뒤 다시 관리자 계정을 생성하면 생성이 됐다

Username 에는 사용할 id를 작성하고
Email에는 자신의 이메일을 작성한 뒤
password에는 비밀번호를 입력하면 된다 이때 비밀번호를 입력할 때는 아무것도 나오지 않는 것이 정상이니 당황하지 말고 비밀번호를 잘 입력하면 된다!
후에 y를 누른 뒤 superuser created successfully라는 문구가 뜨면
관리자 계정 생성을 완료한 것이다!

제대로 생성이 됐는지 확인하기 위해서는 다시 한번
python manage.py runserver를 Terminal에 입력한 뒤

받은 http 주소 뒤에 /admin을 추가로 입력하면

이러한 화면이 뜨는데 자신이 설정한 아이디와 비밀번호를 입력한 뒤 로그인!

로그인을 했을 때 이러한 화면이 뜨면 성공한 것이다!



자 이제 모델을 생성하기 위해

photo > migrations > models.py에 위 코드를 작성한다
Photo라는 클래스는 models의 Model을 상속받는 클래스이며
그 안에 있는 title, author, image, description, created들은
각각 문자열 필드의 최대 글자수가 정해져 있다.

이때 created의 DateTimeField는 날짜 필드로
괄호 안의 auto_now_add=True 은 추가한 시간으로 자동 저장이라는 의미이다

그 밑 def 함수 str(self)는 문자열 함수로
사진을 저장할 때 title 이름을 리턴하도록 정의하였다.

모델을 다 생성했다면 Terminal에
python manage.py makemigrations (모델 변경 내용을 기록해 파일로 만듬) 과
python manage.py migrate (makemigrations에서 생성한 파일을 실제로 실행해 DB에 적용함)를 작성한다

마지막으로 admin 사이트에 Photo 모델을 등록하기 위해
photo > admin.py 파일에서

위와 같이 작성한다

from .models import Photo 현재 파일의 models.py을 불러 Photo 클래스를 호출하고
admin.site.register(Photo) 관리자 페이지에 Photo 모델을 등록한다는 의미이다.

이렇게 작성한 뒤 Terminal에 프로젝트 실행 (python manage.py runserver)을 한 뒤
관리자 페이지로 이동하면

Photo 모델이 등록되어 있는 것을 확인할 수 있다!

우선 이번 주에는 여기까지만 학습하였고 다음 시간에는 django를 이어서 학습할 것 같다!
django 오류가 참 많이 나지만... ^^;; 대부분의 오류가 오타나 들여쓰기 실수로 인해 나타나기 때문에 항상 이 점을 유의하며 작성하면 될 것 같다!!!

이번 주 과제 끄읕~

profile
누구보다 밝게 코딩하기♡

0개의 댓글