Django | 초기 세팅 : 가상환경, Django 설치, DB 세팅

Stellar·2021년 5월 23일
1

Django

목록 보기
1/1
post-thumbnail

Anaconda, 가상환경

가상환경 생성 시 파일이 생기거나 하는 기능은 없어 폴더의 디렉토리는 어느곳에서 하던지 상관 없다.
가상환경 사용 이유 : 패키지 관리를 위해 사용
가상환경 없이 사용할 경우 : 협업이나 테스트등을 하면서 설치되는 패키지들이 많아져 추후 관리 시 불편함

✔️ 가상환경 생성

$ conda create -n 가상_환경_명 python=3.8

-n: 플래그(가상환경에 이름을 준다는 의미)
python=3.8: 파이썬 버전 명시 (3.9는 아직 에러가 많으니 3.8을 쓰자)

가상환경 확인하기

가상환경 리스트 보기 $ conda info --envs
출처 -인문계 공돌이 -티스토리

가상환경 리스트 확인

$ conda env list

가상환경 삭제하기

가상환경 삭제하기 $ conda remove --name 프로젝트_이름 --all
출처 -인문계 공돌이 -티스토리

⭐️ 가상환경 들어가기 : 서버 항상 확인 하기

  • $ conda activate 가상환경명

  • 최신버전 명령어 변경 됨.(맥북에서 터미널로 가상환경 시작할 때 source를 입력하니 실행 됨.)
    $ source activate 가상환경명

✔️ 가상환경 나오기 및 변경하기

나오기(비활성화)

$ conda deactivate

변경하기

$ conda activate new_env

✔️ 가상환경 패키지 확인

$ pip freeze


Django 설치 : 장고 프레임워크 설치 완료 (새 가상환경 설치 시 필수)

$ pip install Django

  • 패키지 이름 == 버전 : 패키지 이름으로 팀원간 공유가 가능하다.

  • Collecting ~ 로 시작하는 파일은 장고를 설치할 때 필요한 파일을 자동으로 받아 준다.

✔️ MySQL server에 접속하기 위한 package 설치

$ pip install mysqlclient

  • mysqlclient를 설치해야만 mysql과 연동이된다.

❗️Error 발생 해결하기

Terminal error: command 'gcc' failed with exit status 1

✔️ Django project 생성

  1. 폴더 생성할 디렉토리로 이동 (필자는 dev 폴더를 만들어 dev폴더에서 프로젝트를 설정함)
    ❗️ 프로젝트 명은 깃허브 레파지토리와 같게 만들자

  2. $ django-admin startproject 프로젝트 폴더명

  3. 내가 만든 장고 프로젝트로 이동'

📌️ 프로젝트 이름을 바꾸었을 때 수정해야 하는 파일들

✔️ 만들어진 장고 폴더 VSC로 열기

  • 입문자 기준 처음엔 vim보단 에디터사용 권장

code . : code와 .사이 space 필수

❗️❗️ 폴더 열었을때 생성한 프로젝트 폴더 안에 manage.py와 생성된 프로젝트폴더명과 같은 이름의 폴더가 하나 더 있어야한다.❗️❗️

✔️ .gitignore 설정

database, secret-key 등의 중요한 데이터를 올리지 않기 위해 .gitignore를 설정한다.

  1. 아래 사이트에서 ex)python으로 개발할 때 .gitignore에 적어줘야할 데이터를 표시해준다. (새탭으로 열기 : Django | python | VSC | linux | zsh)

  2. 생성된 코드 전체 복사

📌️ 3. .gitignore 파일 생성 (manage.py 파일과 같은 위치) -> 코드 붙여넣기 -> 저장


Database 생성 == 해당 프로젝트 이름

터미널에서 순서대로 입력

❗️app은 table이라 DB안에 들어가므로 DB를 최상위 폴더라고 개념잡자

  1. $ mysql.server start # 초기에 입력하지 않아도 되도록 설정되어 넘어가기

  2. mysql 서버 진입 $ mysql -u root -p비밀번호

  3. mysql 서버에서 DB 생성
    mysql> $ create database DB이름설정 character set utf8mb4 collate utf8mb4_general_ci;

  4. DB 확인 $ show databases;

  5. mysql 서버 나가기$ exit

📌️ 9-1. Database 삭제

# mysql 서버에서
mysql> DROP DATABASE DB명;

참고한 사이트

Django- MySql 데이터베이스 삭제하기 -devmin.log

✔️ settings.py 설정

settings.py == 해당 프로젝트의 brain

📌️ 보안을 위한 my_settings.py 생성 (MySQL, SECRET)

1. setting.py(중첩폴더 안 위치)에서 기존 DATABASES 코드를 아래 코드로 변경 (VSC)
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
2. 내용 변경

2-1. my_settings.py 파일 생성 (이름 변경 가능 : 보안 정보 저장용) 디렉토리 == manage.py와 같은 위치

3. DATABASES와 SECRET_KEY 내용을 my_settings.py로 옮겨준다.
  • 이유: .gitignoremy_settings.py를 추가 해뒀기 때문이다.
4. 기존에 settings.py에 있던 DATABASES와 SECRET_KEY의 값을 변경해준다.
  • settings.py가 저런 데이터가 있다는걸 알고있어야 하기때문에 내용만 숨기고 변수로는 남겨둔다

  • my_settings.pysettings.py에 import 해줘야함

⭐️5. .gitignore 파일에 my_settings.py를 적어 ignore 시켜준다. 적는 위치는 상관없지만 확인을 위해 상단에 적자
(5번 안하고 올렸다가 시크릿 키까지 올라가서 가디언한테 메일 받음^^)

📌️ 주석처리

1. settings.py에서 안쓰는 코드를 주석처리한다.

2. urls.py의 내용을 수정한다.

urls.py는 하나의 앱으로 각 부서를 연결해준다.

# from django.contrib import admin 삭제 또는 주석
from django.urls import path

urlpatterns = [
#    path('admin/', admin.site.urls), 삭제 또는 주석
]


✔️ 11. Django application 생성

manage.py 파일은 장고에서 제공해주는 여러가지 명령어를 사용할 수 있게 해주는 파일

📌️ settings.py 의 모든 설정이 완료 된 후 app 생성

  1. manage.py가 있은 디렉토리에서 $ python manage.py startapp app이름 실행

    1-1. application은 table이라 DB안에 들어가므로 DB를 최상위 폴더라고 개념잡자. + 프로젝트명(1ea) > DB명(1ea) > app(== table == 여러개 생성가능)명 (과제 중 app이름을 프로젝트명과 헷갈려 app이름으로 프로젝트를 생성함)

  2. ex)westarbucks 폴더 내에 products(== app) 폴더가 생성됨

📌️ settings.py 에 생성한 app 추가 (안하면 장고가 파일을 못 읽음)

INSTALLED_APPS = [
    #    'django.contrib.admin',
    #    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'products',				# 추가
]

📌️ 11-1. Django application 삭제

  • 못 찾아서 그냥 폴더 지우고 다시 startapp 해줌

✔️ 12. 외부 접속 허용

  1. django-cors-headers 설치하기
  • 사용할 가상환경 activate 후 $ pip install django-cors-headers 설치하기
  1. ALLOWED_HOSTS 추가
    내 서버에 다른 컴퓨터가 접속을 시도하여 무분별한 접속을 차단하기 위해 특정 아이피 주소를 가진 접속만을 허용 한다.
    ALLED_HOSTS를 추가하고 보통 허용하고자 하는 아이피 주소만을 입력하지만, 프로젝트 진행시 여러 아이피 주소를 허용해야 하기에 *을 이용하여 모두 허용하기
  2. INSTALLED_APPS에 corsheaders 추가
    프론트엔드와 통신을 할 때에는 서로 다른 port로 접속을 시도하는데 이를 허용해주기 위하여 INSTALLED_APPS에 기존에 설정한corsheaders를 추가
  1. middleware 추가
MIDDLEWARE = [
	...
    'corsheaders.middleware.CorsMiddleware',
]
  1. CORS 관련 허용 사항 추가
##CORS
CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

✔️ 13. server 실행

최종적으로 Server가 문제 없는지 확인, 서버가 켜지면서 응답을 받을 수 있음.

  1. terminal에서 manage.py가 있는 경로에서 실행
    $ python manage.py runserver

❗️ runserver 시 발생하는 에러
Error: That port is already in use.


✔️ 14. requirements 세팅하기

requirements는 미니콘다 가상환경에있는 패키지들의 버전을 똑같이하여 저장 후 다른 팀원과 공유할 때 사용된다.

# manage.py와 같은 위치에 requirements.txt 파일을 생성한다.(VSC)
`$ cat requirements.txt` # requirements.txt 확인 
`$ pip install -r requirements.txt` # requirements.txt 인스톨 

# 터미널에서 `$ pip freeze` 를 사용하여 패키지 목록을 전부 복사 후 requirements.txt 파일에 붙여넣고 저장만하면 된다.

appnope==0.1.2
asgiref==3.3.4
...
urllib3==1.26.5
wcwidth==0.2.5

✔️ 14-1. requirements 파일로 패키지 한번에 삭제하기

$ pip uninstall -r requirements.txt -y

✔️ 15. github 커밋하기

❓️❗️ 커밋 전에 시크릿 키와 DB 숨김 처리 했는지 확인하기 (참고 - 10. settings.py 설정 - 5.)

초기 셋팅 완료🎉️

0개의 댓글