2021. 8. 18. 20:49ㆍ코딩일지/Django
1. Django Project 초기 세팅
#가상환경 프로그램 : Anaconda, Miniconda, pip env 등등..
#저는 miniconda3로 만들겠습니다.
※ 가상환경 생성
conda create -n "가상환경이름" python=3.9
conda activate "가상환경이름"
프로젝트 진행을 위한 새로운 가상환경을 생성합니다.
※ 데이터 베이스 생성
$ mysql -u root -p
mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;
※ 프로젝트 파이선 패키지 설치
$ pip install django
# pip install django시 django가 설치되어있다면
$ conda install django
$ pip install mysqlclient
# 이후에 MySQL server에 접속하기 위한 package
※ Django Project 생성
$ django-admin startproject Newprojects
$ cd Newprojects
※ Settings.py 설정 및 주석처리 (admin, csrf, auth)
#IP허용
ALLOWED_HOSTS = ['*']
(중요) 추가로 Newprojects/urls.py를 아래와 같이 수정해주세요.
from django.urls import path
urlpatterns = [ ]
※ my_settings.py 생성 (DATABASES, SECRET_KEY)
- 장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
- 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행합니다.
cd '생성한 프로젝트 폴더명'
touch my_settings.py
※ (my_settings.py)파일에 실제 쓰여지는 내용
#NAME : mysql 새로만든 database 명
#USER : root
#PASSWORD : mysql접속 비밀번호
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.
※ settings.py ↔ my_settings.py 연동
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings import DATABASES, SECRET_KEY
...
DATABASES = DATABASES
SECRET_KEY = SECRET_KEY
※ M1 mysql setting
pip install PyMySQL
※ pymysql package 설치 후 settings.py에 추가
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings.py import DATABASES, SECRET_KEY
import pymysql
pymysql.install_as_MySQLdb()
※ corsheaders 설치 및 설정
pip install django-cors-headers
#django-cors-headers가 pip으로 이미 설치되어있다고 뜬다면
conda install -c conda-forge django-cors-headers
※ 설치했다면 settings.py에 INSTALLD_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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
# 꼭 settings.py 파일에 기입해야합니다.
※ 프로젝트 서버 실행
python manage.py runserver
2. Git & GitHub, Branch
# Git 게시물에 명령어와 순서를 참고하셔도 편합니다. https://woojuscodingroom.tistory.com/8
※ git 초기화
- 생성한 장고 프로젝트를 git으로 관리할 수 있도록 초기화 한다.
- managy.py 가 위치한 곳으로 이동
- git init 명령어로 git 초기화
git init
※ .gitignore 생성
- 소스를 공유하기 위해 깃을 사용하지만 올리고 싶은것 올리고 싶지 않은것, 올려서는 안되는 것들이 존재합니다. 이를 구분하기 위해 깃이 설치된 디렉토리에 .gitignore파일을 생성해서 관리해야 합니다.
https://www.toptal.com/developers/gitignore
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
- 다음의 키워드를 추가 후 Create 를 해주세요.(python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh)
- Create한 내용들을 붙여넣기 위한 .gitignore 파일 생성
cd Newprojects
touch .gitignore
vi .gitignore
- 내용 붙여넣기
############################
# gitignore.io 결과 전체 복사 #
############################
# 가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
※ add & commit
git add .
git commit -m "commit할 메세지"
3. Branch
※ Branch 생성
git branch 브랜치 이름 # 브랜치 생성
git checkout 브랜치 이름 # 해당 브랜치로 이동
# 생성과 동시에 이동하는 방법
git checkout -b 브랜치 이름
※ Application 생성
$ python manage.py startapp 앱폴더이름
- settings.py 파일 installed_apps 추가
INSTALLED_APPS = [
...
'products',
※ Github remote, push 실행
- add & commit
git add .
git commit -m "commit할 메세지"
# 여기까지는 로컬에 저장하는 과정이고, push를 통해 로컬 저장소의 작업을 원격 저장소에 업로드해야 합니다.
# 먼저 github 계정을 만들고 상단의 Repositories에서 new를 선택하여 push할 곳을 생성합니다.
- Git remote
git remote add origin "새로생성한 저장소의 url"
- Github repository branch push
git push origin "브랜치 이름"
Github로 가서 확인해보면
testfile 브랜치로 연결된 저장소에 제대로 올려진것을 확인할수있습니다.
이상으로 Django project 생성하는법에 알아보았습니다.
긴 글 읽어주셔서 감사합니다.
다음은 C.R.U.D의 이해와 실습으로 찾아뵙겠습니다.

'코딩일지 > Django' 카테고리의 다른 글
[Django] ManytoManyField (0) | 2021.08.26 |
---|---|
[Django]C.R.U.D (3) (0) | 2021.08.26 |
[Django] C.R.U.D (2) (0) | 2021.08.21 |
[Django] C.R.U.D (1) (0) | 2021.08.19 |
[Django] Tutorials (0) | 2021.08.14 |