가상환경 생성 시 파일이 생기거나 하는 기능은 없어 폴더의 디렉토리는 어느곳에서 하던지 상관 없다.
가상환경 사용 이유 : 패키지 관리를 위해 사용
가상환경 없이 사용할 경우 : 협업이나 테스트등을 하면서 설치되는 패키지들이 많아져 추후 관리 시 불편함
$ 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
$ pip install Django
패키지 이름 == 버전
: 패키지 이름으로 팀원간 공유가 가능하다.
Collecting ~ 로 시작하는 파일은 장고를 설치할 때 필요한 파일을 자동으로 받아 준다.
$ pip install mysqlclient
- mysqlclient를 설치해야만 mysql과 연동이된다.
Terminal error: command 'gcc' failed with exit status 1
폴더 생성할 디렉토리로 이동 (필자는 dev 폴더를 만들어 dev폴더에서 프로젝트를 설정함)
❗️ 프로젝트 명은 깃허브 레파지토리와 같게 만들자
$ django-admin startproject 프로젝트 폴더명
내가 만든 장고 프로젝트로 이동'
code .
: code와 .사이 space 필수
❗️❗️ 폴더 열었을때 생성한 프로젝트 폴더 안에 manage.py와 생성된 프로젝트폴더명과 같은 이름의 폴더가 하나 더 있어야한다.❗️❗️
database, secret-key 등의 중요한 데이터를 올리지 않기 위해 .gitignore를 설정한다.
아래 사이트에서 ex)python으로 개발할 때 .gitignore에 적어줘야할 데이터를 표시해준다. (새탭으로 열기 : Django | python | VSC | linux | zsh)
생성된 코드 전체 복사
📌️ 3. .gitignore 파일 생성 (manage.py 파일과 같은 위치) -> 코드 붙여넣기 -> 저장
터미널에서 순서대로 입력
$ mysql.server start
# 초기에 입력하지 않아도 되도록 설정되어 넘어가기
mysql 서버 진입 $ mysql -u root -p비밀번호
mysql 서버에서 DB 생성
mysql> $ create database DB이름설정 character set utf8mb4 collate utf8mb4_general_ci;
DB 확인 $ show databases;
mysql 서버 나가기$ exit
# mysql 서버에서
mysql> DROP DATABASE DB명;
참고한 사이트
settings.py == 해당 프로젝트의 brain
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
.gitignore
에 my_settings.py
를 추가 해뒀기 때문이다.settings.py
가 저런 데이터가 있다는걸 알고있어야 하기때문에 내용만 숨기고 변수로는 남겨둔다
my_settings.py
를 settings.py
에 import 해줘야함
urls.py는 하나의 앱으로 각 부서를 연결해준다.
# from django.contrib import admin 삭제 또는 주석
from django.urls import path
urlpatterns = [
# path('admin/', admin.site.urls), 삭제 또는 주석
]
manage.py
파일은 장고에서 제공해주는 여러가지 명령어를 사용할 수 있게 해주는 파일
manage.py가 있은 디렉토리에서 $ python manage.py startapp app이름
실행
1-1. application은 table이라 DB안에 들어가므로 DB를 최상위 폴더라고 개념잡자. + 프로젝트명(1ea) > DB명(1ea) > app(== table == 여러개 생성가능)명 (과제 중 app이름을 프로젝트명과 헷갈려 app이름으로 프로젝트를 생성함)
ex)
westarbucks 폴더 내에 products(== app) 폴더가 생성됨
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'products', # 추가
]
$ pip install django-cors-headers
설치하기
- ALLOWED_HOSTS 추가
내 서버에 다른 컴퓨터가 접속을 시도하여 무분별한 접속을 차단하기 위해 특정 아이피 주소를 가진 접속만을 허용 한다.
ALLED_HOSTS를 추가하고 보통 허용하고자 하는 아이피 주소만을 입력하지만, 프로젝트 진행시 여러 아이피 주소를 허용해야 하기에*
을 이용하여 모두 허용하기- INSTALLED_APPS에 corsheaders 추가
프론트엔드와 통신을 할 때에는 서로 다른 port로 접속을 시도하는데 이를 허용해주기 위하여 INSTALLED_APPS에 기존에 설정한corsheaders를 추가
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
]
##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',
)
최종적으로 Server가 문제 없는지 확인, 서버가 켜지면서 응답을 받을 수 있음.
$ python manage.py runserver
❗️ runserver 시 발생하는 에러
Error: That port is already in use.
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
$ pip uninstall -r requirements.txt -y
$ git commit -m "CREATE: 프로젝트 초기 셋팅"
초기 셋팅 완료🎉️