View

TIL 36 | Session_Django_초기세팅

Melody:) 2021. 8. 12. 18:24

튜토리얼  세팅에 몇가지 추가

https://www.notion.so/wecode/Django-Project-Setting-b189b150bb794e6d93bc9bdc80e7f0fb

 

Django Project Setting

📍About


Django Tutorial 잘 진행해주셨나요?

Tutorial은 Django가 어떻게 동작하는지를 익히기 위한 첫 걸음이었습니다! 처음 배우는 만큼, 아직 낯설고 어렵겠지만, 꾸준히 반복하고 연습하면 여러분들도 충분히 잘 하실 수 있습니다!

Django Project Setting 시간에는 실제 프로젝트의 진행을 위해 필요한 설정 정보(settings.py)와, 데이터베이스(mysql)를 연동하고 Git 을 통해 초기세팅과 프로젝트를 관리하는 방법에 대해 배워 보겠습니다.

 

🚀 학습 목표


  1. Django 프로젝트를 생성하고, 초기 개발 환경을 구성할 수 있다.
  2. .gitignore 파일을 생성하고, Git 버전 관리에서 제외할 파일(민감한 정보 등)을 지정할 수 있다.
  3. Github Repository 를 생성하고 내컴퓨터의 Git 과 연동할 수 있다.
  4. Branch 를 (기능별로)생성하고, 기능별로 코드를 관리 할 수 있다.

 

📝 Mentor's Tip


가상환경세팅을 하는 이유?

  • 프로젝트마다 사용하는 버전이 다르기때문에
  • 전역에 영향 안주고 프로젝트마다 별도의 패키지를 잘 관리하기 위해서

 

1. 개발환경 설정

./conda init zsh
source ~/.zshrc

 

2. 가상환경(Miniconda) 설치

[파이썬 가상환경은 어떻게 설치하고, 관리하나요?](https://www.notion.so/5af70f7d7d114c2382e14c7c093ce753)

 

3. corsheaders 알아보기

프론트서버과 백엔드 서버가 다르므로 허용이 필요

  • corsheaders는 무엇일까요? 과거의 서버 (2세대)의 인증은 CSRF를 대비했습니다. 왜냐하면, 페이지를 제공했기 때문이죠.
    사이트 간 요청 위조
  • 현재 우리가 만들 서버에는 페이지가 없습니다. 하지만, 보안은 중요합니다. 그렇다면 어떤방식이 있을까요.
    Django CORS 설정과 API 연동
  • 위의 블로그를 보고 이해하셨으면 좋겠습니다. 따라서 우리는 이 미연에 방지하기 위해! 초기에 설정합니다. 먼저 해야할일은 cors에 대한 처리를 원할하게 도와줄 플러그인인 django-cors-headers를 설치합니다.

 

프로젝트 만들 때 명령문뒤에 .을 붙이기

 

setting에 secret_key를 숨기기 위해 manage.py 로 돌아와 

 

master로 부터 파생된 branch를 feature라고 한다.

커밋으로만 올리기.

app이름은 무조건 복수로.

 

Django Project Setting(Server & Database)

 

Django Project 초기 세팅

가상환경 생성

conda create -n "가상환경 이름" python=3.8
conda activate "가상환경 이름"

# 가상환경 삭제
conda remove -n 가상환경이름 --all

Database 생성

$ mysql -u root -p

mysql> create database "NAME" character set utf8mb4 collate utf8mb4_general_ci;

0) mysql  삭제

"DROP DATABASE 데이터베이스 이름;"

 

1) mysql 실행하기

>> mysql -u root -p

Enter password:  (비밀번호 입력)


2) 데이터 베이스 리스트 보기

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)


3) 데이터 베이스 선택

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed


4) 테이블 보기

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |


5) 테이블 내용 보기

여기서부터는

select * from 테이블명

등과 같이 sql 쿼리를 통해 내부 구조를 살펴보면 된다.

 

Project Python Package 설치

$ pip install django

# 이후에 MySQL server에 접속하기 위한 package
$ pip install mysqlclient
  (중요) mysql 설치되어 있는지 먼저 확인해주세요

[mysqlclient 설치 오류시 해결방법]

 

가상 환경 실행 후 디렉터리를 프로젝트로 이동

pip install mysqlclient

mysqlclient를 설치하는 중에는 많은 오류를 발생한다고 한다.

해결방법에는 HomeBrew 설치 후 먼저 터미널을 껐다 켜자.

brew install mysql

그다음 아래의 명령어로 OpenSSL을 설치해 준다.

brew install openssl

설치가 완료된 후, 아래의 명령어로 mysqlclient를 설치해 준다.

LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient

아까와는 다르게 설치가 제대로 완료되는 것을 볼 수 있을 것이다.

명심할 점은, 프로젝트 디렉터리로 이동 후 설치를 해야 한다는 점이다.

 

 

Django Project 생성

$ django-admin startproject westarbucks
$ cd westarbucks

# 현재 디렉토리에 앱 생성하고자하면 뒤에 . 붙이기
$ django-admin startproject westarbucks .

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 = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
#   'django.middleware.csrf.CsrfViewMiddleware',
#   'django.contrib.auth.middleware.AuthenticationMiddleware',
  	'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

 

urls.py 설정

(중요) 추가로 westarbucks/urls.py를 아래와 같이 수정해주세요.

from django.urls import path

urlpatterns = [
]

 

my_settings.py 생성 (DATABASES, SECRET_KEY)

  • 장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
  • settings.py에 바로 저장되는 방식은 지양해야 합니다.
  • wecode 에서는 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행합니다.
cd '생성한 프로젝트 폴더명'
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에 있는 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

설치했다면 settings.py에 INSTALLD_APPS 안에 추가해줘야합니다.

INSTALLED_APPS = [
...
		'corsheaders'
]

middleware도 추가해야합니다.

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안에 기록되야 합니다.

프로젝트 서버 실행

서버 동작(Runserver)을 통한 오류 검증

python manage.py runserve

 

 

Git & Github

git 초기화

  • 생성한 장고 프로젝트를 git으로 관리할 수 있도록 초기화 한다.
    • manage.py 가 위치한 곳으로 이동
    • git init 명령어로 git 초기화
git init

 

.gitignore 생성

  • 소스를 공유하기 위해 깃을 사용하지만 올리고 싶은것 올리고 싶지 않은것, 올려서는 안되는 것들이 존재합니다. 이를 구분하기 위해 깃이 설치된 디렉토리에 .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 '프로젝트 폴더명'
touch .gitignore
vi .gitignore

############################
# gitignore.io 결과 전체 복사 #
############################

# 가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)

add & commit

git add .
git commit -m "Add: Django Project Setting"

 

: Branch

Branch & Application 생성

1. Branch 생성

  • feature/crud 브랜치를 생성 & 이동
git branch 브랜치 이름 # 브랜치 생성
git checkout 브랜치 이름 # 해당 브랜치로 이동 

# 생성과 동시에 이동하는 방법
git checkout -b 브랜치 이름

 

requirements.txt  생성

  • 우리는 협업을 위해 github repository 를 사용합니다.
  • 협업에 가장 중요한 점은 동일한 개발환경을 구축해야 한다는 것입니다.
  • 즉 환경(사용자의 컴퓨터) 마다 사용하는 패키지를 동일하게 해야합니다.
  • manage.py 가 있는 위치에서 아래 커맨드를 작성해주세요.
$ pip freeze
  • 생성된 requirements.txt 를 확인해서 필수 패키지를 복사 붙여넣기 후, 저장해주세요.
touch requirements.txt 

vi requirements.txt 

Django==3.2.4 
django-cors-headers==3.7.0 
mysqlclient==2.0.3 

# m1의 경우 아래 패키지도 추가해주세요. 
PyMySQL==1.0.2 2. Application 생성

 

$ python manage.py startapp products

 

# settings.py

INSTALLED_APPS = [
	...
	'products',

 

3. Github Push

  • git add & commit
git add .
git commit -m "Add: products application"

 

  • Github repository branch push
git push origin "브랜치 이름"

 

add   ==> commit  ==> push

  1. add : staging 공간에 파일올림
  2. commit : 도장찍음(데이터 저장) 커밋이 중요하다. 
  3. push : 온라인 상으로 올림.

 

403에러

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: unable to access 'https://github.com/wecode-bootcamp-korea/24-westagram-backend.git/': The requested URL returned error: 403

해결방법

git remote set-url origin https://나의 유저 네임@github.com/나의 유저네임 또는 타 유저네임/레파지토리 네임

 

✔️ Assignments


  • Task1 : 새로운 가상환경 만들기
  • Task2 : Task1에서 만든 가상환경에서 Django 초기셋팅 하기
  • Task3 : Django 초기셋팅 git으로 관리하기
  • Task4 : Django 초기셋팅 개인 repository에 push 하기
  • Task5 : github repository url ****classroom 제출

'Django' 카테고리의 다른 글

TIL | DJANGO_get_or_create  (0) 2021.09.17
TIL 30 | Django_Polls만들기_Part1  (0) 2021.08.10
Share Link
reply
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31