파이썬 프로그래밍

파이썬 웹 프레임워크 django 설치 및 로컬 서버 구축하기

코니코니 2022. 10. 2. 00:00
반응형

파이썬 웹 프레임워크 django 설치 및 로컬 서버 구축하기


django는 파이썬으로 웹 개발을 할 때 사용됩니다. 간단한 구조로 어렵지 않게 서버를 생성할 수 있습니다.

명령프롬프트에서 pip install django 명령어 입력으로 라이브러리 설치가 가능합니다.

서버 생성은 윈도우 명령프롬프트(cmd 창)에서 원하는 서버 생성을 위한 디렉토리에 들어간 후(cd 입력으로 이동) django-admin.exe startproject myweb 명령어를 입력합니다.

명령프롬프트에서 서버를 생성하면 위와 같은 파일들이 생성됩니다. 서버를 생성한 후 myweb 디렉토리에서 python manage.py runserver 명령어를 입력하면 로컬 서버가 열립니다.

제대로 실행이 된다면 위와 같은 문구를 볼 수 있습니다. 이제 이 명령프롬프트가 열려있는 상태에서 위에 적힌 http://127.0.0.1:8000 이 링크를 url에 넣으면 생성된 로컬 서버가 열리는 것을 볼 수 있습니다. 서버를 닫을 때는 명령프롬포트에서 ctrl + c 입력을 해주면 됩니다.

아직 home을 꾸미지 않았기 때문에 이러한 페이지가 열릴 것인데 이렇게 만들어진 서버에 Django App을 추가하여 뼈대를 생성할 수 있습니다. 간단하게 테스트 페이지를 만들어 보겠습니다.

먼저 명령프롬포트에서 myweb 디렉토리로 이동 후 manage.py startapp home 명령어를 입력합니다.

제대로 실행이 된다면 위와 같은 home 폴더가 생성되는 것을 볼 수 있습니다. home 폴더 내부에서 views.py를 열어줍니다.

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

# Create your views here.

HtmlText = '''

<!DOCTYPE html>
<html>
    <head>
        <title>Example: 4-1</title>
    </head>
    <body>
        <h2>테스트중 : Naver search</h2>
        <form action=""> 
        search: <input type="text">
        <input type="submit" value="search">
        </form>
    </body>
</html>
'''


def index(request):
    return HttpResponse(HtmlText)

파일 내부에 로컬 서버에 보여질 테스트 html을 작성한 후 함수에 넣어줍니다. 그리고 myweb 폴더에 있는 settings.py 파일에 app을 추가해야 합니다.

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'home' # 여기에 app 추가
]

INSTALLED_APPS 리스트에 앞으로 사용될 app 이름들을 넣어주는거죠. 이번에는 home app을 생성했으니 home을 넣어줍니다. 다음으로 myweb 폴더에 있는 urls.py 파일도 수정을 해줘야 합니다.

from django.contrib import admin
from django.urls import path
import sys


# 스크립트 시작 경로 넣어주기(상대경로 스크립트 가져오기 용도)
sys.path.append(r'D:경로1\경로2\경로3')

# 상대경로 패키지 가져오기
from djangotest.myweb.home.views import index  # noqa: E402

urlpatterns = [
    path(r'admin/', admin.site.urls),
    path('', index)  # 추가된 app 내 사용될 py 함수 불러오기
]

여기서 조금 애를 먹었던 것이 있었는데요 urls.py 파일이 들어있는 디렉토리에서 외부에 있는 home 디렉토리를 import 해야 하는 것이었는데 sys.path로 시작 경로를 넣어줌으로써 외부 디렉토리를 import 할 수 있었습니다. 경로를 지정하는 방법은 최초로 서버를 생성했을 때 지정했던 경로의 이전 디렉토리를 넣어주면 됩니다. 예를 들어 서버를 생성할 때 D:경로1\경로2\경로3\경로4 이렇게 디렉토리를 지정하고 서버를 생성했다면 sys.path의 경로에는 D:경로1\경로2\경로3 여기까지만 넣어주면 됩니다.

# 상대경로 패키지 가져오기
from djangotest.myweb.home.views import index  # noqa: E402

그리고 아까 생성된 home 폴더에 views.py 파일에 있는 index 함수를 임포트 시키면 되는 것인데 from에서는 서버 생성시 지정을 했던 디렉토리를 기준으로 올라옵니다. djangotest / myweb / home / views.py 에서 import index 함수를 가져오는 것이죠.

urlpatterns = [
    path(r'admin/', admin.site.urls),
    path('', index)  # 추가된 app 내 사용될 py 함수 불러오기
]

이제 urlpatterns 리스트에 import 했던 index 함수를 path에 추가를 해주면 됩니다. path의 첫번째 파라미터는 추가된 사이트의 url 경로를 넣어주는 것인데 바로 보여질 페이지에 테스트로 넣을 것이기 때문에 ""입력으로 url 경로를 없애줍니다.

이렇게 설정을 한 후 다시 python manage.py runserver 를 입력하여 서버를 열어봅니다.

views.py 스크립트에 작성을 했던 Html 함수가 열리는 것을 확인할 수 있습니다. 추가적으로 이렇게 열린 로컬 서버는 외부 접속이 불가하지만 ngrok라는 터널링 프로그램을 사용하면 내 로컬 서버에 고유 url이 생기면서 외부에서의 접속을 가능하게 해줍니다. ngrok 설치 및 사용방법은 다음 포스팅에서 적어보도록 하겠습니다.

반응형