장고:Git

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

장고! 웹 프레임워크! 틀:장고

  1. 장고:개요
  2. 장고:웹페이지설계
    1. 장고:앱
    2. 장고:url
    3. 장고:model
      1. 장고:DB
      2. 장고:모델 필드
      3. 장고:모델의 변경
    4. 장고:view
      1. 장고:클래스형 뷰, 제네릭 뷰
      2. 장고:view 각종 기능
    5. 장고:template
    6. 장고:static. 정적파일 사용하기
      1. 장고:CSS 사용하기
      2. 장고:JS 사용하기
      3. 장고:글꼴 사용
      4. 장고:부트스트랩
    7. 장고:media. 미디어 파일 사용하기
  3. 장고:관리자페이지
  4. 장고:settings.py
  5. 장고:기능구현
    1. 장고:회원관리
    2. 장고:유저
    3. 장고:커스텀 유저
    4. 장고:소셜로그인
    5. 장고:입력받기
    6. 장고:저장된 내용 활용하기
    7. 장고:변수 내보내기
    8. 장고:글쓰기
    9. 장고:페이징(페이지나누기)
    10. 장고:답변쓰기(댓글쓰기)
    11. 장고:추천,즐겨찾기
    12. 장고:새글(최신글) 나타내기
    13. 장고:썸머노트 설치
    14. 장고:네비게이션 바 만들기
    15. 장고:검색기능
    16. 장고:카테고리 만들기
    17. 장고:사진 올리기
    18. 장고:파일 업로드
    19. 장고:이메일app 만들기
    20. 장고:매직 그리드
  6. 장고:웹서비스
    1. 장고:Git
    2. 장고:리눅스에 올리기
    3. 장고:우분투에 올리기(nginx 사용)
    4. 장고:도커로 올리기
  7. 장고:팁

개요

문제가 생겼을 때 등.. 버전관리 시스템을 이용하여 이전버전으로 돌려야 하는 상황이 자주 발생한다. 그 관리시스템 중 가장 유명한 것이 Git. 깃.

주요사용

  1. 개발을 진행할 때 특정 기능을 구현했더니 중요한 다른 기능이 되지 않는 경우도 있다. 이럴 땐 다시 되돌려야 한다. 이를 위한 버전관리를 지원.
  2. 실제 서비스 기능 외에, 개발을 위한 브랜치(가지)버전을 만들어 따로 개발한 후 완성된 후 merge를 통해 개발내용을 서비스 기능과 합칠 수 있다.
  3. 팀 작업을 할 때 누가 어떤 작업을 했는지 파악할 수 있다.

설치

OS에 따라 다르다. 또한 어떤 터미널을 사용하느냐에 따라 다르다. 굉장히 다양한 방법이 있어 검색해서 자신에게 맞는 방법을 찾아 설치한다.

기초 사용법

과정 방법 설명
저장소만들기 가상환경 내에서, + 프로젝트 디렉토리에서.

git init

현재 디렉터리를 관리하겠다는 의미.

프로젝트/.git/ 디렉터리가 생성된다.
.gitignore작성 공유하지 않아도 되는 개발환경의 로그라든가, 가상환경이라든가 깃에 추가하지 않아도 될 것들이 있다.

혹은 올리지 말아야 할 것들이라든가. 이것들을 관리한다.

텍스트 파일 안에 git으로 관리하지 않을 디렉터리, 파일명을 한 줄씩 써 넣는다. DB도 배제했는데, DB도 함께 올릴거라면 빼준다.(db.sqlite3)

__pycache__: 해당 환경에서 사용한 캐시파일.

venv/: 가상환경.(사용자마다 파일명이 다를 수 있음.)

log: 해당 환경에서의 로그.

media/ : 미디어 파일은 git의 대상이 되지 않아야 한다.


다음 링크에서 편하게 만들 수 있다. https://www.toptal.com/developers/gitignore

.idea

db.sqlite3

*.pyc

__pycache__

logs

venv/

media/

위처럼 그냥 한 줄씩.

추가하기(저장) 프로젝트 디렉터리에서

git add -all .

현재 디렉터리 하위의 모든 파일들을 깃에 추가.
코멘트 달기 git commit -m "코멘트" 그냥 수행하면 이메일주소, 사용자명을 입력하라고 뜨니..

git config --global user.email "이메일주소"

git config --global user.name "이름"

을 써 넣자.

저장(한번에) git commit -a -a 옵션을 추가하면 git add를 하고 commit를 한다는 의미.
수정.

어떤 것이 바뀌었나?

git diff 변경된 부분을 알려준다.

다만, 한글부분이 깨질 때가 있는데, 그땐

set LC_ALL=C.UTF-8 을 프롬프트에 입력한다.

되돌리기 git reset --hard HEAD 마지막 commit된 지점으로 되돌린다.

사전준비

프로젝트에서 깃을 이용하기 전에 처리해야 할 문제가 있다.

settings.py 분리

settings.py엔 비밀키, 이메일 비밀번호 따위가 들어가 있어 민감함 정보를 보호하지 못한다. 보호할 정보를 다른 파일로 만든 후 그걸 불러오는 방식으로 분리하거나 아예 다른 setting으로 실행하는 등 다양한 방법이 있는데(환경변수에 등록하기도 한다.), 여기에선 다른파일로 만든 후 불러오는 방식을 사용하겠다.(json파일로 만들어 불러오거나 환경변수에 값을 저장하는 등... 다양한 방법이 있다.)

공유되지 않는 보안용 파일 만들기

다양한 방법으로 보호되어야 할 정보를 따로 분리한 후 gitignore에 설정한다.

보호전략
방법 설명
라이브러리 활용 pip install django-environ 설치 후 .env 파일을 작성해 보호할 정보를 저장한다.(django-environ 도큐먼트 참고)

settings.py에서 import os, environ으로 불러온 후, 보호된 정보를 활용한다.

이후 .env를 gitignore에 담는다.

굳이; 이렇게 복잡하게;;?
텍스트 파일 활용 외부에 텍스트파일을 만들어 두고, 이를 읽어 비밀키 등에 대입. 쓸 코드가 길어져;
.py 활용 다른 파이썬 파일 안에 각종 정보를 담아두고 settings.py에서 import해 변수로 활용.

SECRET_KEY는 쿠키, 세션 같은 보안에 쓰여 외부에 노출되면 안되지만, 많은 이들이 그냥 github에 올려버리고 만다. 그런 경우, 다음 링크를 통해 새로운 키를 만들어보자. https://miniwebtool.com/django-secret-key-generator/

필자는 setting.py와 같은 경로에 secret.py를 만들고 다음과 같이 변수를 정의하였다.

SECRET_KEY= '비밀키'

기존 변수와의 관계를 알기 쉽게 하기 위해 이름을 그대로 사용한다.

setting.py 변경

secret.py를 import하고 해당 부분을 바꾸어준다.

+ DEBUG모드를 False로 바꾸어준다.

+ ALLOWED_HOSTS에 서비스하는 도메인을 추가해준다.

from . import secret

SECRET_KEY = secret.SECRET_KEY

ALLOWED_HOSTS = ['id8436.iptime.org', '127.0.0.1']  # 서버의 IP혹은 도메인을 입력해주어야 작동한다.

이외 이메일 비밀번호 등 필요하다 판단되는 변수들을 secret.py로 옮겨 정의한다.

.gitignore에 추가

.gitignore에 config/secret.py를 추가한다.

운영모드

DEBUG모드를 False로 바꾸어주어야 하는데, 개발컴에선 True로 되어 있어야 편하다. 때문에 새로운 파일을 만들어 settings.py의 내용을 그대로 쓰되, DEBUG값만 바꿔주어 서비스 하자.

python3 manage.py runserver --settings=세팅파일명 형태로 settings.py 대신 다른 파일을 사용할 수 있다.

service_settings.py 라는 이름으로 같은 경로에 다음과 같이 작성하였다.

from .settings import *

DEBUG = False  # DEBUG=True이면 개발모드, False면 운영모드로 인식한다.

python3 manage.py runserver --settings=config.service_settings 라는 명령어로 세팅파일을 바꾸어 실행할 수 있다.

이렇게 하면 개발할 때엔 지금과 같은 python3 manage.py runserver명령으로 개발모드에 들어설 수 있다.


환경변수에 등록하기

감출 키를 환경변수에 등록하고 os.environ['환경변수'] 형태로 사용할 수도 있다.

주의. 특수문자때문에 환경변수에 추가 안될 수도 있다.

깃허브

깃을 저장하는 가장 유명한 전략. MS에서 운영하며, 무료로 사용하더라도 공개방식을 취하면 제약이 전혀 없다.

사용

가입하고 나면 원격지 저장소의 url을 확인할 수 있다.

과정 방법 설명
원격저장소 연결 프로젝트 디렉터리에서

git remote add origin https://원격저장소주소

저장 git push 아이디와 비밀번호를 묻는데, 알아서 기입하면 됨.

이게 귀찮으면 git config credential.helper store 을 주면 인증절차 생략이 가능하다.

이후 저장이 잘 되었는지 확인해보자.

가져오기

git pull로 가져온다. 그러나, 두 사용자가 파일을 각각 변경시켰다면, 내용에서 충돌이 발생한다. 때문에 각각의 콘솔에서 git commit와 push를 해주지 않으면 해당 프로젝트를 삭제하고 다시 clone해서 가져오는 방식을 택한다.

앞으로의 사용

등록이 다 끝났다면... 앞으로 내용이 바뀔 때마다 간단하게 저장을 할 수 있다.

과정 방법 설명
저장(한번에) git commit -a -m "변경사항요약" -a 옵션을 추가하면 git add를 하고 commit를 한다는 의미.
저장 git push 깃허브로 보낸다.

유의

  • 파일이 늘어나면 git add --all . 로 디렉터리를 추가해주어야 한다.(개고생했네;)
  • 배포중인 경우, 서버를 재시작해주어야 변경내용이 적용된다.(개고생했네..)