django 초기세팅

이지훈·2021년 6월 23일
0

TIL

목록 보기
29/33
post-thumbnail

conda 가상환경

conda 가상환경 생성

conda create -n '가상환경이름' python= 'python version'

conda 가상환경 삭제

conda env remove -n '가상환경이름'

conda 가상환경 활성화

conda activate '가상환경이름'

conda 가상환경 비활성화

conda deactivate

python package 설치

$ pip install django
# MySQLserver에 접속하기 위한 패키지
$ pip install mysqlclient
$ pip install django-cors-headeres

Django project 생성

$ django-admin startproject 'project-name' . # .은 현재 디렉토리에 생성
$ cd 'project-name'

MySQL db 생성

$ mysql.server start
$ mysql -u root -p

create database 'name' character set utf8mb4 collate utf8mb4_general_ci;

Settings.py 설정

# IP 허용
ALLOWED_HOSTS = ['*']

# 사용하지 않는 요소 주석처리
# admin, csrf, auth 등

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

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    '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',
]

urls.py

from django.urls import path

urlpatterns = [
]

보안을 위한 my_settings.py 생성

managy.py있는 폴더에 생성

touch my_settings.py # 로 빈 파일 생성
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

SECRET_KEY = '시크릿키'

settings.py에 db, key연동

from my_settings import DATABASES, SECRET_KEY

DATABASES  = DATABASES
SECRET_KEY = SECRET_KEY # 변경

cors settings

settings.py

INSTALLED_APPS에 'corsheaders'추가

MIDDLEWARE에 'corsheaders.middleware.CorsMiddleware', 추가

settings.py 가장 아래에 입력

#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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)

장고 초기 셋팅 완료 후 오류 검증

  • runserver을 통해 오류 검증
python manage.py runserver

Django app 생성

settings.py 완료되면

$ python manage.py startapp 'app_name'

settings.py에 app_name 추가

INSTALLED_APPS = [
    #'django.contrib.admin',
    #'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'app_name' # 위에서 생성한 app_name 추가
]

version 다 다운받는 명령어

pip3 install -r requirements.txt

views.py 작성

import json

from django.http     import JsonResponse
from django.views    import View
from cgv.models import A, B # models.py의 class 명 기재

urls.py 생성

application에서

touch urls.py

models.py와 views.py 작성 후

  • makemigrations: models.py에 작성한 python code를 database에 적용하기 위한 migration 파일(설계도)를 만드는 과정
python manage.py makemigrations app_name
  • migrate : makemigration으로 생성한 migration 파일(설계도)을 database에 적용
python manage.py migrate

mysql 데이터 입력

mysql 접속

mysql -u root -p

저장된 db파일 확인

mysql> show databases;

위에서 생성한 db 파일 사용

mysql> use 'db_name'

db 내의 table 명 확인

mysql> show tables;

table 내 입력된 테이터 확인

mysql> select * from table #table_name ;

IPython 설치 및 사용

우선 python 설치 확인(가상환경 내 설치된 패키지 리스트 출력)

pip freeze

ipython 설치

pip install ipython

ipython 사용

python manage.py shell

create 방법

a1 = User.objects.create(name='a', age=1, birth='1990-04-04')

manytomany field add

b1의 movie가 a1의 actor를 정참조 한다고 할 때 작성 방법

다음과 같이 작성하면 db에 movies_actor와 같이 중간 참조 테이블이 생성된다.

a1 = Actor.objects.create(first_name='지훈', last_name='이', date_of_birth='1995-01-20')
b1 = Movie.objects.create(titel='그랜드 부다페스트 호텔', release_date='2018-10-11', running_time=100)

b1.actors.add(a1)

httpie 호출

get 사용해서 body를 안 가져오고 단지 호출만 할 때

http GET http://127.0.0.1:8000/cgv/actor #위에서 actor
http GET http://127.0.0.1:8000/cgv/movie #위에서 movie일 때

create 하는 방법

새롭게 만들 때 사용

http -v POST 127.0.0.1:8000/movies/movie first_name='abc' last_name='abc', date_of_birth='1999-09-09'

github

git 초기화

manage.py가 위치한 곳으로 cd 명령어를 이용해 이동

  • branch에 add . 할 때는 init 하지않음
git init

.gitignore 설정

.gitignore 파일 생성

touch .gitignore

Gitignore설정 페이지 에서 아래와 같이 작성

python, pycharm, vscode, vim, macOS, Linux, zsh

  • Manual추가 my_settings.py, *.csv

commit

git add .
git commit -m "CREATE: 프로젝트 초기 셋팅"

git repository

자신의 github에 repository를 만들고 로컬 컴퓨터와 연동되게 한다.
우선 master -> main으로 변경

git branch -M main

remote 추가

git remote add origin repository 주소

완료된 초기 셋팅 main branch github에 push

git push origin main

branch 생성

main에서 갈라져 나올 branch 생성

git branch 브랜치 이름 # 브랜치 생성
git checkout 브랜치 이름 # 해당 브랜치로 이동 

branch에 push

git add . 
git commit -m "커밋 메시지"
git push origin 브랜치 이름

pull request

생성한 브랜치와 main을 merge 할 때 pull request를 날리고 병합

models'py 수정으로 databases 날려야할 때

  • drop database 데이터베이스 이름;
  • migrate 폴더 삭제
  • python manage.py makemigrations app_name
  • python manage.py migrate
profile
꾸준하게 🐌

0개의 댓글