System Architecture
- Django 와 Pytorch 를 이용한 자연어 처리 서비스를 구현한다고 할 때, 생각하는 시스템의 아키텍처는 아래와 같다.
현재 루트 디렉토리 파일 구조
- 우선, 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로 파이썬이 웹서버와 통신하기 위한 파일 |
서버 실행하기
- 프로젝트 생성 후 웹 서버가 정상적으로 동작하는지 확인하기 위해 아래 명령어 입력을 통해 웹 서버 실행
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 등의 파일이 생성된다.
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파일 안에 템플릿 코드도 포함 |
참고
'Programming > Web' 카테고리의 다른 글
[Web Server] Django와 Web Server (0) | 2022.02.22 |
---|---|
[Web] JPA와 Hibernate, Spring Data JPA (0) | 2022.01.18 |
[Web] application.properties / application.yml (0) | 2022.01.18 |
[JavaScript] 동기와 비동기 / blocking과 Non-blocking (0) | 2022.01.17 |