python - Django - Run superbasic Server

2 분 소요

python - Django - Run superbasic Server

  • MVC니 다 필요 없고 일단 server를 띄워보도록 하겠습니다.

View - index.html

  • view는 사용자에게 보여지는 문서를 말합니다. 그냥 html 문서라고 생각해도 문제가 없죠.
  • DjangoProj1 > App > template > App1 > index.html을 다음처럼 만들어 줍니다.
<!DOCTYPE html>
<head>
    <title>This is Title</title>
</head>
<body>
    <!--
    - Controller(Views.py)에서 View로 parameter를 전달할 수 있습니다.
    이 때, parameter는 dictionary로 넘어오는데 그 때 'param1'을 key로 쓰는 애를 가져옵니다.
    -->
    <h2> param1 {{param1}} </h2>
    <p>index.html DjangoProj1 > App1 > templates > App1</p>
    <ul>
    <!--
    - for 문은 다음처럼 쓸 수 있습니다.
    -->
    {% for x in paramLst %}
        <li>x: </li>
    {% endfor %}
    </ul>
</body>

Controller - views.py

  • view를 정의해줬으니까, 이제는 view에 데이터를 전달해줄 수 있는 controller를 만들어 줍니다. 근데, controller의 이름이 views.py 라서 헷갈리기는 하죠.
  • DjangoProj1 > App1 > views.py에 다음처럼 어떤 html template에 어떤 parameter를 전달해줄 것인지 정해줍니다.
from django.shortcuts import render
from django.views import View


class TestController(View):
    def get(self, request, *args, **kwargs):
        return render(
            request,
            # 어떤 view를 렌더링할 것인지 정해주고
            'App1/index.html',  
            # 해당 view에 전달할 data(context)를 정의하고 
            context={
                'param1': "xx",
                'paramLst': [1, 2, 3]
            }
        )

Controller - urls.py

  • 이제 사용자가 입력한 url이 어떤 페이지로 연결될지를 정해줍니다.
  • 이 파일은 DjangoProj1 > DjangoProj1 > urls.py에 있습니다.
"""DjangoProj1 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

from django.urls import path
# 만들어준 controller를 여기에 작성해주고,
from App1.views import TestController

# 만들어진 controller가 어떤 path에 연결될지를 정해줍니다.
urlpatterns = [
    path('', TestController.as_view()),
    path('ABC', TestController.as_view()),
]

Configure settings.py

  • DjangoProj1 > DjangoProj1 > settings.py을 수정해줍니다.
# 사용자가 접속할 수 있는 route를 열어주는 것이죠.
# '127.0.0.1'는 localhost를 말합니다.
ALLOWED_HOSTS = [
    '127.0.0.1'  
]

# 새로 만든 App1을 등록해줘야 하고요.
INSTALLED_APPS = [
    ...
    'App1'  
]

# database 설정 부분도 여기서 해주는데, 저는 따로 사용하지 않습니다.
# 그냥 기본으로 설치되는 sqlite3를 일단 사용합니다.
DATABASES = {}

RunServer

  • 자 이제 다음을 실행해주고, 웹브라우저에서 http://127.0.0.1:8000/으로 접속하면 우리가 만든 웹페이지가 뜨는 것을 알 수 있습니다.
python manage.py runserver

Wrap-up

  • 일단 따라하니까 뭐가 되긴 하는데, 이게 왜 되냐…싶지만 일단은 그렇게만 알고 가시면 됩니다. 반드시 알아야 하는 것은 다음이죠.
    • View, Controller가 구분되어 있다. 즉 보여지는 부분은 html로 다 몰고, logic이나 데이터 전달 부분은 모두 controller에서 처리해준다.
    • “아니, 간단한 걸 만드는데 왜 View에도 쓰고, Controller에도 쓰고 귀찮다”싶을 수 있지만, 이렇게 구분해두는 것이 유지보수측면에서 매우 안정적이죠.
    • View의 문법은 jinja를 사용해서 쓴다.
    • setting.py에서 전체 시스템에 대한 설정값을 조정한다.
  • 이정도인 것 같네요. 세부적으로 어떤지는 앞으로 차츰차츰 알아보도록 합시다.

댓글남기기