Server/Django issue

[Django] Project 초기 세팅

개발자킹콩 2022. 8. 3. 01:51

프로젝트 셋팅에 대한 자료가 방대해서 싹다 모아보여 한다.

  • 가상 환경 추가 및 적용 (Mac 적용: source venv/bin/activate, Mac 해제: venv/bin/deactivate)
  • Django 설치

다음과 같이 업데이트가 가능하다면 pip와 setuptools를 업데이트 한다.

# pip를 최신 버전으로 업데이트
$ python -m pip install --upgrade pip
# setuptools를 최신 버전으로 업데이트
$ pip install --upgrade setuptools
# 해당 가상 환경에 장고 설치
$ pip install django
$ pip install django=원하는버전
  • 폴더 하나 생성: DjangoProject
  • 그 안에, django-admin startproject proj (프로젝트 명이 proj) -> 이렇게 되면 project와 필요한 파일들이 생성된다.
  • python manage.py startapp [app name] (기능을 하나하나 만든다.)

 


 

  • root directory(manage.py 있는 곳)으로 이동하여 .gitignore 파일 설정:

 


 

  • 이후, root directory(manage.py 있는 곳)으로 다시 이동하여 .gitignore를 열어, DB 설정과 JSON Web Token을 인코딩하고 디코딩할 때 사용하는 SECRET KEY를 관리할 목적의 my_settings.py를 추가해준다. my_settings.py는 결코 깃에 올려서는 안된다! ( https://www.toptal.com/developers/gitignore/api/django,python,macos)

 

setting.py 파일이란?

 

  • 다사 root directory로 돌아와 이제 my_setting.py를 만들 차례이다.
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

SECRET_KEY = '시크릿키'  # setting.py 내 SECRET_KEY 사용

  • 자 이제 my_settings 준비는 모두 끝났다. 그럼 이제 root directory의 settings.py로 이동하여 순서대로 진행한다. my_settings.py의 내용은 절대 비밀이기 때문에 그대로 작성하는 순간 해킹의 위험이 매우 증가! 위와 같이 사용한다는 것만 기재.
    1) import my_settings
    2) DATABASES: 부분에 이미 my_settings에 적어둔 정보를 쓰겠다는 의미로 my_settings.DATABASES로 변경.
    3) SECRET_KEY: 역시 그대로 데려다 쓰겠다는 의미로 my_settings.SECRET['secret']으로 변경.

https://hae-ong.tistory.com/25

 

Django와 MySQL 연동하기

파일구조 프로젝트명 > 앱> templates > index.html 기존의 데이터베이스를 연결하는 법 1. 커넥터 설치 Python에서 MySQL 서버와 통신을 할 수 있게 해주는 파이썬 용 데이터베이서 커넥터(Databaser Connector).

hae-ong.tistory.com

https://simbasimba.tistory.com/9

 

(5) (Django 개발부터 배포까지) Django Mysql 연동하기

오늘은 myql 연동하여 간단히 장고 어드민 사이트에서 데이터 추가하여 꺼내오는법 다룰게요 사실,., 포트폴리오에 서버는 전혀 필요가 없지만! 저희는 aws배포가 최종 목적 이기도하고 글 쓰면서

simbasimba.tistory.com

 

  • 앗 근데 mysql로 디비를 사용하고 있다면 여기서 에러가 날 것. pip install mysqlclient할 것.
  • 앗 그래도 안된다면 mysql 서버가 안켜진 것: mysql.server start 이후 다시 서버 가동
  • SignIn 메소드는 프론트로부터 body에 무언가 내용을 더해서 요청을 받으려면 post여야 한다. (get X)

 


 

 

통신이 발생할 때, Cross Domain 이슈를 막기 위해 corsheaders를 설정 해주어야 한다.

https://oen-blog.tistory.com/46

 

[Django] 장고 CORS 크로스 도메인 이슈

Django로 API 서버를 만드는데 cors에러가 떴다 ... Cross Domain 이슈가 발생한건데, 이 문제는 왜 발생하는 걸까 ? CORS CORS는 Cross Origin Resource Sharing의 약자로 도메인 또는 포트가 다른 서버의 자원을..

oen-blog.tistory.com

  • 다시 root directory로 돌아와, pip install django-cors-headers로 콜스 헤더 설정 (설치 후에는 pip freeze로 잘 설치되었는지 확인할 것)
  • 설치 후 다시 root directory의 settings.py로 이동
  • INSTALLED_APPS 의 맨 마지막에 'corsheaders' 추가
  • 그 아래 MIDDLEWARE에는 가장 상단에 'corsheaders.middleware.CorsMiddleware'추가
  • 특히 Django의 CommonMiddleware나 Whitenoise의 WhiteNoiseMiddleware와 같은 응답을 생성할 수 있는 미들웨어 전이어야 한다. 이러한 미들웨어 전이 아닌 경우엔, 이러한 응답들에 CORS 헤더를 추가할 수 없기 때문이다.
INSTALLED_APPS = [
...
		'corsheaders'
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', # <- 가능한 높게 위치시켜야 한다.
    'django.middleware.common.CommonMiddleware', 
    ...
]
...
...
#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',
		#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
  • 이렇게하면 cors 설치가 끝났다고 볼 수 있음.
  • 터미널에서 나의 아이피를 확인하는 방법 ipconfig getifaddr en0
  • 나의 아이피를 확인한 후에 다시 root directory의 settings.py로 이동하여 28행쯤의 ALLOWED_HOSTS= 를 찾아, ["*", "내 아이피 주소", "내 아이피 주소:8000"]으로 변경. 내 아이피 주소로 들어오는 모든 접근 다 허용하겠다는 소리임. 8000은 우리가 일반적으로 쓰는 django 포트명.
  • 다시 root directory로 복귀하여 python manage.py runserver 0:8000 돌리기

 

 


 

 

그 후 Git & GitHub 초기화 및 설정을 진행한다.

https://yeongwoo-cho.tistory.com/287

 

[Django] Git 초기화 & Github 연결

Git 초기화 git을 이용하여 관리할 수 있도록 초기화 한다. manage.py가 있는 디렉토리에서, git init으로 git을 초기화 시킨 다음에 .gitignore 파일을 먼저 작성한다. .gitignore 앞서 생성하였던 my_setting..

yeongwoo-cho.tistory.com

 

 


 

Reference

 

https://velog.io/@ifyouseeksoomi/Django-프론트-백-연결하는-날

 

[Django] Django project 초기 세팅 및 Frontend-Backend 연결해보기

200715 Frontend와 Backend는 그래서 어떻게 처음 만나는가

velog.io

https://myjamong.tistory.com/101

 

[Django] 프로젝트 setting.py 설정 :: 마이자몽

장고 setting.py 장고 프레임워크의 모든 개발환경 세팅은 setting.py 파일에서 설정을 한다. setting.py 파일에서 로그 설정, APP 등록, Templates 설정, DB설정, 다국어 및 지역 시간 설정, 정적파일 설정 등

myjamong.tistory.com

https://hae-ong.tistory.com/25

 

Django와 MySQL 연동하기

파일구조 프로젝트명 > 앱> templates > index.html 기존의 데이터베이스를 연결하는 법 1. 커넥터 설치 Python에서 MySQL 서버와 통신을 할 수 있게 해주는 파이썬 용 데이터베이서 커넥터(Databaser Connector).

hae-ong.tistory.com

https://velog.io/@cmin95/Django-C.R.U.D-1-1

 

Django C.R.U.D 1 - (1) 초기 세팅, Git & Github 연결

Django 초기 세팅, Git & Github 연동

velog.io

https://oen-blog.tistory.com/46

 

[Django] 장고 CORS 크로스 도메인 이슈

Django로 API 서버를 만드는데 cors에러가 떴다 ... Cross Domain 이슈가 발생한건데, 이 문제는 왜 발생하는 걸까 ? CORS CORS는 Cross Origin Resource Sharing의 약자로 도메인 또는 포트가 다른 서버의 자원을..

oen-blog.tistory.com