가상환경생성(conda) > 필요한 모듈 설치 > database 세팅 > 깃 시작 > models.py(python code 작성) > python shell & Mysql
가상환경 생성(conda)
# 가상환경 생성 & 모듈 설치
conda create -n "name" python = 3.8
conda activate "name"
pip install django
pip install PyMySQL # (=pip install mysqlclient)
pip install django-cors-headers
# Database 생성
mysql -u root -p
mysql > create database NAME character set utf8mb4 collate utf8mb4_general_ci;
# Django Project 생성
cd Desktop
django-admin startproject "name"
cd "name"
>> server 확인 <<
python manage.py runserver
DATABASE setting | APPS, Urls, Database, CORS
* settings.py 설정(vscode내 생성된 project 폴더 내 settings.py에서 실행) *
ALLOWED_HOSTS = ['*'] # all
#주석처리
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'westarbucks', # app 생성 후 추가
'corsheaders', # app 생성 후 추가
'products', # app 생성 후 추가
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware'
]
# project_file/urls.py를 수정
from django.urls import path
urlpatterns = [
# path('admin/', admin.site.urls),
]
# my_settings.py 생성하여 작성
---------------------------
cd "새로 생성한 폴더명"
touch my_settings.py
---------------------------
# my_settings.py 파일에 작성할 내용
SECRET_KEY = 'settings.py에 있는 secret_key'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'westarbucks', # mysql database 생성시 작성한 이름
'USER': 'root',
'PASSWORD': 'password', # mysql database 생성시 작성한 패스워드
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'}
}
}
# settings.py <-> my_settings.py 연동
from pathlib import Path
from my_settings import DATABASES, SECRET_KEY
import pymysql
pymysql.install_as_MySQLdb() # M1
DATABASES = DATABASES # my_setting.py와 연동
SECRET_KEY = SECRET_KEY # my_setting.py와 연동
** corsheader 설정 **
--------------------------------------------------------------
pip install django-cors-headers # 초기 세팅시 했다면 pass
--------------------------------------------------------------
# settings.py -> INSTALLD_APPS, MIDDLEWEAR 안에 추가
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',
)
git initial push & Django app start
git init
# .gitignore
cd "project folder name"
touch .gitignore
vi .gitignore
my_settings.py #추가작성
git add .
git commit -m "Add: Django Project Setting"
# github repository 생성
git branch -M main # master를 main으로 변경
git remote add orgin repository 주소
git push orgin main # main branch로 push
# branch 생성
git branch feature/crud
git checkout feature/crud
#git checkout -b feature/crud 생성과 동시에 이동
** Application 생성 **
>> Django app 시작하기
-------------------------------------
python manage.py startapp "app_name"
-------------------------------------
#settings.py에 app 추가
INSTALLED_APPS = [
...
'app_name',
]
git add .
git commit -m "Add: products application"
git push origin "브랜치이름"
models.py(model calss -> database table과 mapping, ORM) setting 후
python manage.py shell #python shell 시작
python manage.py makemigrations "app_name"
python manage.py migrate
from "app".models import *
-> data 생성
> MySql 데이터 확인
```python
mysql -u root -p
show databases;
USE database_name;
SHOW tables;
DESC table_name;
SELECT * FROM table_name
git Push
** github에 브랜치 push **
git add .
git commit -m "커밋 메시지"
git push origin "브랜치"
--------------------------------------
브랜치 -> main 브랜치로 pull request 보낸다
--------------------------------------
git pull orgin main