본문 바로가기
코딩 공부/웹프레임워크

[Django를 이용한 창업] 1일차 메모

by Camel_coding_food 2023. 7. 9.
반응형

뱀 언어를 수백시간 배우는 우리...

django-admin startproject (프로젝트 명) .

 

1. 프로젝트 폴더를 생성한 후 위 코드를 터미널에 입력하면 아래와 같은 구조의 파일과 폴더가 생성된다. 

[현재 프로젝트]/
  ⬇ 📁 [장고 프로젝트 명]
    🖹 __init__.py
    🖹 asgi.py
    🖹 settings.py
    🖹 urls.py
    🖹 wsgi.py
  🖹 manage.py

__init__.py는 디렉토리 내부 폴더들을 패키지로 인식하도록하여

import로 연결 사용할 수 있게 해준다.

 

 

settings.py에는 접속허용 호스트, 디버그 모드, 연결된 앱,

세션 암호화와 민감정보 접근을 위한 비밀키 등이 존재한다.

 

Github에 프로젝트를 올리는 경우, 비밀키는 분리하여 안올려야한다.

.gitignore 파일을 프로젝트의 디렉토리에 만든 후, 비밀키를 저장한 파일은 Git push에서 제외하도록 하자.

 

 

urls.py는 후에 만들 앱을 연결해줄 url을 설정해주는 파일이다.

 

wsgi.py란 Web Server Gateway Interface의 약자로,

웹 이용자가 웹 서버를 통해 요청한 정보를 전달(통신, 연결)해주는 역할을 한다.

 


 

프로젝트를 생성한 후, 해당 디렉토리 내에서 터미널에 아래 명령어를 치면 서버를 구동시킬 수 있다.

python manage.py runserver

 

settings.py 파일 내에서 ALLOWDED HOST, 즉 서버 접속 허용 호스트를 지정할 수 있는데,

공란, 또는 "*"를 입력하면 모든 호스트에게 접근을 허용하게 된다.

 

후에 배포를 위해선 웹사이트의 도메인을 등록한 후 서버를 구동하면 된다.

 


 

settings.py 파일 내에서 Django 프레임워크가 제공하는 다양한 기능을 사용하도록 설정할 수 있는데,

그중 DRF(Django Rest Framework)라는 중요한 라이브러리가 있다.

 

Rest Framework란 쉽게말하자면, 복잡한 HTML코드를

스마트폰 사용자의 핸드폰에 매번 랜더링할 수 없으므로, JSON 또는 XML형식으로 데이터를 

스마트폰 사용자에게 보내는 API를 제공해준다.

 

더 쉽게 말하자면 복잡한 코드를 단순화하여 스마트폰 어플리케이션에서 처리할 수 있도록 해준다.

 

CORS와 DRF 설치를 위해서 INSTALLED_APPS에 아래 코드를 추가한다.

    'rest_framework',
    'corsheaders',

 

또한 settings.py 파일 하단에 해당 내용을 추가한다.

 

CORS_ORIGIN_ALLOW_ALL = True
#일단 개발중엔 True로 두어 모든 도메인 접근을 허용한다.
CORS_ALLOW_CREDENTIALS = False
 
CORS_ALLOW_HEADERS = [
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
]
 
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',

)
     
CORS_ORIGIN_WHITELIST = (
    # '허용할 URL',
)

 

 

프로젝트 폴더 내부의 각 요청에 따른 파일들의 연결 보안 및 API설정에 

CORS를 추가해주기 위해 MIDLEWARE에 아래 코드를 추가해준다.

 'corsheaders.middleware.CorsMiddleware',

미들웨어 등록 중 중요한 것은 등록 순서이다.

 

미들웨어 항목을 적용할때는 상단부터 차례대로 적용되므로

가장 1차적인 보안 적용사항을 미들웨어 항목 맨 위에 등록해줘야한다.

 

복잡한 보안 또는 API가 아니더라도,

자기만의 미들웨어 함수로 http request가 들어왔을 경우 실행하고자하는 코드를 추가할 수 있다.

def my_middleware(get_response):
	# 미들웨어 함수는 팩토리 형식을 사용한다.
    
    def middleware(request):
        # 뷰가 호출되기 전에 실행될 코드들

        response = get_response(request)

        # 뷰가 호출된 뒤에 실행될 코드들

        return response

    return middleware

 

데이터베이스도 Mysql, Sqlite, Postgresql 중에 선택할 수 있다.

 

하지만 가장 가볍고 사용하기 쉬운 Sqlite를 사용하는걸로 한다.

 

 

 

추가) 아래 두 코드로 DRF와 corsheaders를 사용하려면 pip install로 설치해줘야한다.

pip install djangorestframework
pip install django-cors-headers

 

반응형

댓글