본문 바로가기

Programming/Web

[Web/DL] Django 기반의 자연어 처리 서비스 구현

System Architecture

 

  -  Django 와 Pytorch 를 이용한 자연어 처리 서비스를 구현한다고 할 때, 생각하는 시스템의 아키텍처는 아래와 같다.

 

DL Service based Django Architecture

 

 

현재 루트 디렉토리 파일 구조

 

  -  우선, Django 프로젝트 생성 과정에 대한 설명 전 프로젝트 구성 후의 루트 디렉토리 파일구조는 아래와 같다.

 

pyDjango 디렉토리 내에

pyDjango    (루트 디렉토리)   
├── sampleDjango     (프로젝트 설정과 웹 실행에 필요한 파일이 있는 디렉토리)
└── djangoApp    (생성한 앱) 
└── djangoVenv   (가상환경 폴더)

 

Django 설치

 

  1.  Django 프로젝트 폴더 생성

 

    -  클론 받은 프로젝트 폴더 내에서 테스트용 flask 웹 어플리케이션을 생성할 디렉토리(pyDjango) 생성

 

cd C:\Users\ETNERS\Documents\python_pytorch_sampling_20220221

mkdir pyDjango

 

 

  2.  가상환경 생성 및 활성화

 

    -  위에서 생성한 프로젝트를 진행할 디렉토리 pyDjango 에서 ' djangoVenv ' 라는 이름의 가상환경 생성

 

cd pyDjango

python -m venv djangoVenv

 

 

    -  가상환경 생성으로, pyDjango 폴더 내에 > venv 디렉터리 생성 > venv/Scripts 폴더로 이동해 가상환경 활성화

 

cd djangoVenv/Scripts

activate

 

  4.  Django설치 

 

    -  위에서 activate 한 가상환경 내에서 django설치 및 버전 확인 가능

 

pip install django

django --version

 

 

프로젝트 생성

 

  -  django-admin startproject '프로젝트 이름' 을 이용해 프로젝트 생성

 

  -  이때, 상위 디렉토리인 pyDjango 폴더 내에 생성

 

  -  프로젝트 이름 다음에 현재 경로를 나타내는 '  .  ' 을 추가하면 현재 경로에 바로 프로젝트 생성 가능

 

django-admin startproject sampleDjango .

 

프로젝트 구조

 

파일명 기능
manage.py 웹 서버를 실행하고 새로운 애플리케이션을 생성하는 등의 명령 수행
__init__.py Python에게 해당 디렉토리를 패키지처럼 다룰 수 있도록 알려주는 파일로, 파이썬 버전과의 호환과 관련
settings.py 프로젝트 설정과 관련된 내용 포함
urls.py 현재 프로젝트의 URL 선언을 저장하며,
웹 브라우저로부터 요청이 들어오면 최초로 탐색되는 기준 url 파일
wsgi.py Web Server Gateway Interface로 파이썬이 웹서버와 통신하기 위한 파일

 

Django 프로젝트 생성 시 파일 구조

 

 

서버 실행하기

 

  -  프로젝트 생성 후 웹 서버가 정상적으로 동작하는지 확인하기 위해 아래 명령어 입력을 통해 웹 서버 실행

 

python manage.py runserver

 

  -  서버 실행 시 아래와 같은 내용이 출력되었는데,

 

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

 

  ->  이 경우는 아래 명령어를 입력해 적용되지 않은 migrations 를 설치하면 되는 것이었다.

 

python manage.py migrate

 

앱 생성 후 프로젝트에 추가

 

  1.  위에서 프로젝트를 생성한 위치인 pyDjango 디렉토리 내에서 아래 명령어를 입력해 ' djangoApp ' 라는 이름으로

 

새로운 앱을 생성한다.

 

python manage.py startapp djangoApp

 

  -  앱을 생성 후 __init__.py , admin.py , apps.py , models.py , test.py , views.py 등의 파일이 생성된다.

 

App 생성 후 구조

 

 

  2.  이때, 생성한 djangoApp 을 .원래 sampleDjango 프로젝트에 연결한다.

 

    -  sampleDjango 의 settings.py 에서 INSTALLED_APPS 에 djangoApp 을 추가

 

View 작성

 

  1.  서버 실행 후 접속 시 '테스트 페이지'가 표시되도록 views.py 작성

 

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return HttpResponse("테스트 페이지")

 

  2.  sampleDjango의 urls.py 에 views.py 의 경로 추가

 

# from django.conf.urls import url
from django.urls import include, re_path
from django.contrib import admin
from django.urls import path
from djangoApp import views

urlpatterns = [
    re_path('admin/', admin.site.urls),
    re_path('', views.index),
]

 

  -  이때, 기존에 django.conf.urls.url() 이 Django 3.0 에서 지원되고, Django 4.0 + 에서는 삭제되어 발생하는 오류로

 

  ->  url() 을 ->  re_path() 로 대체

 

 

App 안의 설정 파일 역할

 

  -  하나의 프로젝트는, 여러 기능을 하는 app 으로 이루어져 있다.

 

  -  앱 생성 후 프로젝트(sampleDjango) 디렉토리 안의 settings.py 안에 생성한 앱을 추가

 

->  settings.py의 INSTALLED_APPS 안에 'djangoApp' 추가

 

 

파일명 역할
models.py 모델(Model)의 DB 구조를 결정 - 데이터 모델을 만들어주는 역할
 ORM(object-oriented-mapping)이라는 것을 통해 웹 프로그래머가 SQL을 모르더라도 DB를 사용할 수 있도록 만들어줌
->  ORM은 Django에서는 python을, DB에서는 sql을 사용하는 중간에서 매개체 역할 수행
python으로 작성된 class 기반의 모델을 DB에 저장할 수 있도록 바꾸어줌
-> 모델을 정의할 때 : 모델명 = 클래스명 = 테이블 이름이 되고,
    클래스의 속성들이 컬럼(Column)이 됨
admin.py 관리자 페이지(DB 테이블을 웹 페이지 상에서 손 쉽게 관리할 수 있도록 도와주는 페이지)
프로젝트 폴더 경로에서 python manage.py createsuperuser 명령어로 관리자 계정을 생성해서 사용
해당 관리자 페이지에 대한 기능들이 admin.py에 저장
 views.py 로직을 담당(요청 처리) 
View를 만든 뒤에는 urls.py에 해당 View 경로를 추가
urls.py url을 통한 호출과 관련된 내용 포함
어떤 url을 이용해 어떤 view를 동작시킬까에 대한 내용을 urls.py에 기록
templates 폴더 보통 html 파일이 들어 있으며, html파일 안에 템플릿 코드도 포함

 

 

 

참고

 

  -  https://western-sky.tistory.com/52

  -  https://0ver-grow.tistory.com/950