세모세 프로젝트_Django백엔드_1

jkky98·2023년 11월 2일
0

Project

목록 보기
3/21

백엔드 코딩만 진행할 가상환경을 하나 파고, django를 다운받고 django 프로젝트를 시작해보도록 한다.(가상환경-miniconda)

#1 가상환경 만들기 : conda create --name semose
#2 가상환경 활성화 : conda activate semose

#3 장고 설치 : conda install django
#4 프로젝트 시작경로 설정 : cd project시작경로

#5 프로젝트 만들기 : django-admin startproject semose
#6 앱 만들기 : django-admin startapp api

앱 등록을 위해 프로젝트 경로의 setting.py에서 다음의 부분에 api(앱)을 추가한다.

# Application definition

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

project경로에서 python manage.py runserver 터미널에서의 명령을 통해 문제없이 실행가능함을 확인.

테스트용으로 백엔드에서 가정한 요청으로 하여금 점수를 주는 우선 api라는 url을 만들어 보자. 그러기 위해서는 url정의부터 필요하다.

urlpatterns 안에 path를 추가하고 url은 api로 설정해준다.
/api를 통해 api앱으로 위임될 것이다.
api앱에도 urls.py파일을 추가하고 url패턴을 정의해준다. 모든 경로에 대해 view.index 뷰 함수로 라우팅되도록 한다.
view 파일에 함수를 작성해보자. Json형식으로 나타나길 원함으로 django.http의 jsonresponse를 활용한다.
하지만 한글이슈로 인해 다음과 같이 출력된다.
JSON 렌더링 시 ASCII 이외의 문자를 인코딩하지 않도록 지정한다. 다음으로는 DB연동 및 모델을 만들어보도록 한다.

다음과 같이 setting.py에 기본적으로 생성된 db.sqlite3라는 데이터베이스와 연결된 상태를 나의 mysql로 연결을 바꾸도록 한다.
해당부분을 다음과 같이 바꾼다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_database_user',
        'PASSWORD': 'your_database_password',
        'HOST': 'your_database_host',
        'PORT': 'your_database_port',
    }
}

나의 mysql 정보를 넣고 저장했더니
다음과 같이 로딩실패가 뜨면서 친절하게도 mysqlclient를 설치했냐고 물어본다. 바로 설치해준다. 설치하고 서버 재실행하니 문제해결,

models.py 파일에 Place 모델을 만든다. DB로 부터 place_name,x,y가 필요하기에 다음과 같이 코딩하고 db_table과 app을 Meta에 등록한다.
모델을 만들었다면 마이그레이션을 생성해야한다. $ python manage.py makemigrations 로 Place를 추가한다.

$ python manage.py migrate를 통해 migrate하려니 에러가 발생했다. 이미 데이터베이스에 테이블이 존재한다는 것.(당연하지...) 검색결과 $ python manage.py migrate --fake api 다음 명령어로 해결하고 migrate를 끝냈다.

DB의 내용이 잘 출력되는지 보기위해 간단하게 불러오기로 했는데 다음과 같은 에러가 또 발생했다.

모델 공부하면서 배웠던 시리얼라이저의 필요성이다. 모델에서 가져온 데이터를 시리얼라이저를 통해 예로 Json형식에 맞춰야 하는 것이다. 이를 위해 rest_framework를 install한다.

rest_framework docs를 찾아 천천히 따라한다.

app은 이미 추가했으니 rest_framework를 setting에 추가한다.

다시 docs를 참고하니 다음과 같이 시리얼라이저를 구성하라고 한다. 똑같이 따라하도록 하자.

view에서 적용, 계속해서 docs 따라하기

그리고 다시 앱 실행을 확인해보니 성공:)

데이터가 잘 들어오는지 확인했으니, 이제 조건에 해당하는 쿼리를 줘보도록 하자. 조건은 우선 가정한다. 예로 스타벅스, 맥도날드, 올리브영 세가지의 시설과 주소 "팔달구 권광로 243 래미안노블클래스2단지아파트 202동" 를 클라이언트 요청에 의한 입력변수로 가정한다.

우선은 스타벅스, 맥도날드, 올리브영에 대한 검색 쿼리를 만들어야 한다. 다음 포스팅에서 이어서

profile
자바집사의 거북이 수련법

0개의 댓글