:: Django 프로젝트는 아래와 같은 순서로 세팅이 진행됩니다.
:: 매번 다른 프로젝트마다 사용 프로그램 및 버젼이 다를 수 있으므로 확인하고 세팅을 해주어야 합니다.
:: miniconda를 사용하여 가상환경을 생성
# 가상환경 생성
conda create -n "가상환경 이름" python=3.8
conda activate "가상환경 이름"
:: 어떤 종류의 database를 사용할지 정하고, DB를 생성하는 과정
<<mysql을 사용한다면>>
mysql -u root -p
# mysql 접속
create database {NAME} character set utf8mb4 collate utf8mb4_general_ci;
# {NAME}의 이름을 갖는 Database를 생성함
# utf8mb4 :::: 데이터베이스에 이모지, 특수문자를 사용 가능한 문자열을 추가함
::: 📌 mysql 명령어
mysql> show databases;
# database들을 보여주는 명령어
mysql> exit
# mysql 종료하는(서버에서 나가는) 명령어
:: 원하는 이름의 폴더 생성 및 진입
mkdir django-33
cd django-33
:: Django package 설치(생성한 폴더 안에서)
:: django
& mysqlclient
설치
$ pip install django
# 이후에 MySQL server에 접속하기 위한 package
$ pip install mysqlclient
(중요) mysql 설치되어 있는지 먼저 확인해주세요
$ pip install ipython
# Django Shell을 깔끔하게 사용하기 위한 라이브러리
::: 📌 mysqlclient
mysqlclient
가 이 커넥션을 만들어주는 역할::: 📌 pip freeze
asgiref==3.5.1
certifi==2021.10.8
Django==4.0.4
sqlparse==0.4.2
:: django-admin
django-admin startproject django_crud
# 입력하게되면 django_crud라는 이름의 폴더가 생성됨
# 이 폴더 안에는 django_crud라는 파일과, manage.py 파일이 생성됨
여기서 중요한 것은 django_crud/settings.py 이다.
:: 📌 app
을 생성하려면?
python manage.py startapp (app name)
토큰
생성, 혹은 서버에서만 사용할 수 있는 비밀코드
다른 장소로 옮겨서
노출되지 않도록 함:: 프로젝트용으로 진행할 것인지 배포용으로 진행할 것인지 확인
Ture
:: 개발하는 동안 발생하는 모든 에러가 발생하면 바로 확인할 수 있도록 터미널에 출력False
:: 배포용이며, 배포할 때는False
로 변경해서 배포해야함['*']
을 사용하면 모든 트래픽을 받는다는 설정아래 두가지 주석처리 할 것
'django.contrib.admin',
'django.contrib.auth',
아래 두가지 주석처리할 것
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
:: 여러개 파일이 있을 수 있는데 어떤걸 root로 할것인가?
ROOT_URLCONF = 'django_crud.urls'
urls.py
를 root urlconf
로 하겠다.'ENGINE': 'django.db.backends.mysql'
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
# 어떤 DB를 쓸 것인지
'NAME' : '33_instagram',
# 만들어놓은 DB 이름
'USER' : 'root',
# mysql 서버 접속할 때 사용하는
'PASSWORD' : 'password',
# 접속할 때 사용하는 비밀번호
'HOST' : '127.0.0.1',
# DB가 실행되고 있는 서버의 주소를 적는다.
# ex) 127.0.0.1 :::Local server
'PORT' : '3306'
# IP만 적어놓으면 장고가 길을 잃음
# 택배 받을 때 생각하면, 아파트 주소를 정확히 써줘야하는 것과 마찬가지
# 맥북에서 돌아가는 여러 애플리케이션 중에 PORT를 통해서 정상적으로 요청을 보내고 받고가 가능
}
}
corsheaders
pip install django-cors-headers
간단하게 보안용도로 사용하는 라이브러리
링크 확인해서 더 공부할 것 (https://blog.thereis.xyz/41)
설치 후에는
settings.py
안에 INSTALLED_APPS
와 MIDDLEWARE
에 추가해줘야함
INSTALLED_APPS = [
...
'corsheaders'
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
#REMOVE_APPEND_SLASH_WARNING
APPEND_SLASH = False
##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',
)
모든 것이 정확하게 설치되었는지 pip freeze
를 통해서 확인
ex) 이번 프로젝트 같은경우, mdjango-cors-headers
가 추가되었을 것이다.
urls.py에 admin
지우기
from django.urls import path
urlpatterns = [
]
python manage.py runserver
통해서 작동하는지 확인 (작동하면 아래와 같은 결과)System check identified no issues (0 silenced).
May 04, 2022 - 08:40:05
Django version 4.0.4, using settings 'django_crud.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C.
:: 서버가 살았는지 죽었는지 확인하기 위한 기능 추가
python manage.py startapp health_check
로 생성settings.py의 INSTALLED_APPS에 health_check 추가
health_check 내부의 views.py에 아래 코드 추가
from django.http import HttpResponse
def ping(request):
print(f"client's request {request}")
return HttpResponse("pong")
from django.urls import path
from health_check.views import ping
urlpatterns = [
# 127.0.0.1:8000/ping요청 들어왔을 떄 Veiw.py의 코드가 실행된다.
path("ping", ping)
]
touch my_settings.py
로 새로운 파일 만들어주고,
그 안에 settings.py에 있던 민감한 정보들 secretkey와 database같은 것들을 옮긴다.
그 후, settings.py에 from my_settings import DATABASES, SECRET_KEY
로 연결해준다.
그리고 밑에 SECRET_KEY = SECRET_KEY
DATABASES = DATABASES
로 settings.py에서 더 이상 민감한 정보를 볼 수 없도록 만들어준다.
그리고나서 잘 동작하는지 다시 확인 python manage.py runserver
manage.py
가 위치한 곳으로 이동git init
.gitignore
파일을 생성해서 관리해줘야한다.cd '프로젝트 폴더명'
touch .gitignore
vi .gitignore
############################
# gitignore.io 결과 전체 복사 #
############################
# 가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
git status
" 명령어를 통해서 폴더에서 작업한 내용들이 보여진다.git add .
" 명령어를 통해서 add 해주고,git commit -m "Add: Django Project Setting"
" 명령어를 통해 commit까지 한다.:: 여기까지 진행하면 깃 관련 설정은 모두 끝난다.
홈에 들어가서
your repositories 로 들어간 후, new를 통해서 새로운 repository를 생성
안에 repository 이름과 여러 설정들을 정한 후 create
그러면 아래 이미지 같은 화면이 나옴
그러면 아래 이미지에 해당하는 명령어를 iterm2에 입력하여 생성한 Repository와 로컬에 있는 저장소를 연동시킨다. 그 후 깃헙을 새로고침하면 깃헙에 올라간 내 파일들이 보인다.
📌 당연히 .gitignore을 통해서 업로드하지 않길 원했던 파일들은 저장되지 않는다.
insight
탭의 network
탭에 main branch
가 하나 있음git branch feature/signup
등을 통해서 생성하고git checkout feature/signup
을 통해서 이동:::: 📌 "git branch
" 명령어를 통해서 내가 지금 어떤 브랜치에 있는지 알수 있다.
이후 "python manage.py startapp users
" 명령어를 통해 users
라는 앱을 만들어 주고,
아까와 동일하게 django_crud/settings.py에 Installed apps에 'users'
앱 추가 후,
users 폴더의 views.py
에 코드 내용을 작성한다.
그 후 "git status
" 명령어를 입력하면 작업내용이 또 나옴
그러면 그 내용을 다시 add("git add.
") 해준 후 commit("git commit -m "Add: Sign up function"
")
이후 "git log
" 명령어를 통해 제대로 commit되었는지 확인 후,
push
("git push origin feature/signup
")한다.
:::: 📌 이때도 주의해야할 것이 feature/signup
의 local에서 개발했다고 하면, push 할때도 동일한 Local에서 push해야함
pull requests
► compare and pull request
버튼 누르고,base: main
◀︎ compare:feature/signup
이 진행된다. creat pull request
버튼을 누르고, merge
버튼을 누르게 되면 merged 되었다고 뜸.그렇게되면 결과적으로 code탭으로 가면 users폴더가 추가된 것을 볼 수 있으며, 네트워크 탭으로 가면 더 가시적으로 확인가능하다.