본문 바로가기
  • 우당탕탕속의 잔잔함
Programming/Front-End & Back-End

[WEB] Django를 통한 간단한 웹 구축하기

by zpstls 2023. 1. 26.
반응형

 

 

요번 포스트에서는 Django를 아주 간단하게 다뤄보도록 하겠습니다.

저는 Back-End 개발자가 아니기에... 아주 심플하게 수행해볼 예정입니다.

 

 

Deep Learning과 관련된 프로젝트를 수행하다보면 Server에서 Deep Learning Model이 돌아가고 Client에서 결과 값을 받아와 Draw 하는 구조가 많습니다. 이는 최근 Lite 한 Model들이 많이 개발되고는 있으나 Deep Learning Model들이 가벼워지는 데는 한계가 있기 때문입니다. 무거운 프로그램을 고사양의 Server PC들이 담당하고 Client들은 사양에 비교적 덜 종속적이게 구동시켜야 할 필요성이 있기 때문이죠.

 

저는 웹 개발자는 아니기 때문에 비교적 쉽게 Front와 Back-End를 구현할 수 있는 Django를 다뤄볼 것입니다.

서버 개발자분께 "제가 서버를 다뤄본다면 뭘로 시작하는 것이 좋을까요?"라고 여쭤봤을 때, 추천받은 프레임워크입니다. 그러하니 쓸데 없는 포스팅은 아니길 바랍니다.ㅎ

 

이제 본격적으로 Django를 시작해보도록 하겠습니다.

Django & Python

 

Django란, Python을 이용하여 Web Site를 쉽게 만들 수 있도록 하는 Python Framework입니다.

Django는 DRY(=Don’t Repeat Yourself)라고도 하는 Components의 재사용성을 강조하고 Login System, Database Connection 그리고 CRUD(= Create, Read, Update, Delete) 작업과 같은, 즉시 사용할 수 있는 기능과 함께 제공됩니다.

 

Django는 MVT Design Pattern (= Model, View, Template)을 따릅니다.

  • Model : 표현하고자 하는 Data, 보통 database의 data를 의미합니다.
  • View : User의 요청에 기반하여 Template와 Content를 Return하는 Request Handler
  • Template : Data를 Display하는 방법에 대한 Logic과 함께 Web Page의 Layouts를 포함하는 HTML과 같은 Text File

Model은 database로 부터 Data를 제공합니다. Django에서 Data는 Object Relational Mapping(= ORM)으로서 전달되는데, 이는 Database와 함께 쉽게 동작하도록 디자인된 기술입니다. 보통 SQL을 이용하여 Database의 Data를 추출하는데, 이때 복잡한 SQL문을 사용하지 않고도 Database에 접근이 가능하도록 되어있습니다. Model은 보통 models.py File에 위치합니다.

View는 HTTP Request를 Arguments로 취하고 관련된 Models을 Import 하고 Template에 어떠한 Data를 보내야 하는지 찾아 최종 결과를 Return 하는 Function 또는 Method입니다. 보통 views.py File에 위치합니다.

Template는 결과가 어떻게 표현되어야 하는지를 묘사하는 파일입니다. 이는 Web Page의 Layout을 설명하는 HTML 코드가 포함된 .html 파일인 경우가 많습니다. 물론 다른 파일 형식일 수도 있습니다.

Django는 사용자가 URL을 요청하면 URL을 보낼 View를 결정하여, WebSite의 다른 페이지를 탐색하는 방법을 제공합니다. 이때 사용되는 File이 urls.py입니다.

 

Django의 기본적인 매커니즘은 다음과 같습니다.

  1. Browser가 URL을 요청합니다.
  2. URL을 수신한 후, urls.py 파일을 확인합니다. 그리고 URL과 일치하는 View를 호출합니다.
  3. views.py에 있는 View는 관련된 Model을 확인합니다.
  4. Model은 models.py File에서 Import 됩니다.
  5. View에서 Template Folder의 지정된 Template로 Data를 보냅니다.
  6. Template에는 HTML 및 Django Tags가 포함되어 있으며, Data와 함께 완성된 HTML Contents를 Browser에 반환합니다.

물론, 실제로는 이것보다 더 복잡하게, 더 많은 작업을 수행하게 되겠죠?

 

 

 

 

 

 

이제 Django를 설치해 사용해 봅니다. Python이 설치되어 있다는 가정하에 시작하도록 하겠습니다.

 

Set Virtual Environment

각 Django Project는 Virtual Environment위에서 실행되는 것을 권장하며, 이때 널리 사용되는 가상 환경 중 하나는 venv입니다. 이는 Python에 포함되어 있으며 다음과 같은 과정을 통해 구성할 수 있습니다.

# myproject = project Name
>> py -m venv myproject

위와 같은 명령어를 수행하게 되면 myproject의 하위 Directory에 Include, Lib, Scripts Directory 및 pyvenv.cfg파일이 생성됩니다. 이후 이를 활성화하기 위해 다음과 같은 명령어를 입력합니다.

>> myproject\Scripts\activate.bat

위와 같은 과정을 통해 가상 환경을 활성화시키고 이 위에서 작업을 수행하면 됩니다. 이 활성화된 환경 위에서 Django를 설치합니다.

>> py -m pip install Django
>> django-admin --version

 

 

Create Project

위에서 구성한 Virtual Environment에서 Project를 생성하였다면 이제 코드 작업을 수행할 작업 환경을 구성합니다.

다음과 같은 명령어를 통해 작업 환경을 구성할 수 있습니다.

# myworld = Directory Name
>> django-admin startproject myworld

위 명령어를 수행하면 myworld의 구조가 다음과 같이 구성됩니다.

구성이 완료가 되었으면 다음 명령어를 통해 Djago Project를 Run 합니다.

>> py manage.py runserver

모든 과정이 정상적으로 수행되었다면 다음과 같은 결과를 얻을 수 있습니다.

Result of "runserver"

이제 Browser에서 127.0.0.1:8000을 Open 할 수 있습니다.

 

 

 

 

 

Create App

App이란 Web Application을 의미하며 이는 구체적으로 Home Page, Contact Form, Members Database 등을 의미합니다. 이러한 App을 만들어보도록 하겠습니다.

 

우선 다음과 같이, App을 저장하고 싶은 경로를 선택하여 이동하고 해당 경로에서 다음과 같은 명령어를 통해 App을 생성할 수 있습니다.

# members = App Name
>> py manage.py startapp members

만일 위 과정을 수행할 때, Server가 running 되고 있다면 [CTRL-BREAK]을 통해 Server를 Stop 하고 수행하도록 합니다.

위 과정이 정상적으로 수행되었다면 다음과 같은 구조가 생성됩니다.

 

 

About View

우선, view.py를 다뤄보도록 하겠습니다. View는 적절한 Response를 반환시켜 줄 필요가 있는 정보를 수집하는 역할을 수행합니다.

Django에서 View는 HTML과 같이, http request를 받고 반환하는 함수입니다. 이러한 View는 보통 App Directory에 있는 views.py에 저장됩니다.

views.py를 다음과 같이 작성합니다. 이 간단한 코드는 Browser에 response를 어떻게 보낼지 정의하는 것입니다.

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

def index(request):
    return HttpResponse("Hello world!")

그러나 이 View를 수행하기 위해서는 URL을 call 해야 합니다. 해당 부분은 urls.py에 다음과 같이 작성하도록 합니다.

(urls.py는 views.py가 위치한 같은 경로에 생성해야 합니다.)

# members/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

이 urls.py는 Members Application에서만 해당되는 코드입니다. Root Directory인 myworld에서도 일부 Routing을 수행해야 합니다.

myworld Directory에 urls.py가 있으며 이 File을 다음과 같이 수정합니다.

# myworld/urls.py

from django.contrib import admin
from django.urls import include, path

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

이는 127.0.0.1:8000/members/를 통해 들어오는 User를 Routing 할 Argument를 urlpattern에 추가해 주는 과정입니다.

py manage.py runserver를 통해 server를 구동시키고 127.0.0.1:8000/members/를 통해 들어가면 다음과 같은 결과를 얻을 수 있습니다.

Result - 1

 

 

Create Templates

결과 값은 HTML에 출력되며, 이는 Template에서 생성되어야 합니다. 따라서 다음과 같이 HTML file을 members Directory 내부에 생성합니다.

myfirst.html은 다음과 같이 작성합니다.

<!DOCTYPE html>
<html>
<body>

<h1>Hello World!</h1>
<p>Welcome to my first Django project!</p>

</body>
</html>

그리고 이를 View 하기 위해, views.py File을 다음과 같이 수정합니다.

from django.http import HttpResponse
from django.template import loader

def index(request):
  template = loader.get_template('myfirst.html')
  return HttpResponse(template.render())

위 코드는 Server에서 Response를 줄 때, HTML Template를 Load 하고 이를 Render 하는 동작을 수행합니다.

그리고 이전까지 수행했던, “Hello World”보다 더 복잡한 처리를 수행하기 위해 Django에 새로운 App이 생성되었다는 것을 알려주어야 하는데, 이를 위해 myworld에 포함된 settings.py를 다음과 같이 수정합니다. 그리고 Migrate 명령을 수행합니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'members.apps.MembersConfig',
]
>> py manage.py migrate
>> py manage.py runserver

위 과정이 정상적으로 수행되면 다음과 같은 결과를 얻을 수 있습니다.

Result - 2

더보기

ISSUE : Migrate

 

만일 Migrate를 할 때 다음과 같이 적용할 요소가 없다고 나온다면,

myworld Directory에 포함된 db.sqlite3을 삭제하고 migrate를 수행해 봅니다.

 

 

 

 

 

Create Models

새로운 Table을 만들기 위해서는 새로운 Model을 반드시 생성해야 합니다. Members Folder에서 models.py File을 열어 다음과 같이 작성합니다.

from django.db import models

class Members(models.Model):
  firstname = models.CharField(max_length=255)
  lastname = models.CharField(max_length=255)

처음, Django Progect를 생성하게 되면 빈 SQLite Database가 생성됩니다. 위 코드는 이와 같은 database에 Members Table을 추가하는 것입니다.

우선, Members Class를 생성하고 이것에 Table Fields를 묘사합니다. First Field는 Text Field이고 members의 이름이 포함됩니다. Second Field 또한 Text Field이고 이는 members의 성이 포함됩니다. 두 Field는 모두 최대 255 글자를 가질 수 있습니다.

다음 명령어를 통해 Member의 Model을 Migrate 할 수 있습니다.

>> py manage.py makemigrations members

위 명령어가 정상적으로 수행되었으면, migrations Folder에 새로운 변경들에 관한 File이 생성될 것입니다.

이후, 전체를 Migrate 하면 Django는 migrations Folder에 있는 새로운 파일의 내용을 기반으로 SQL문을 만들고 실행합니다.

>> py manage.py migrate

실행 후, db.sqlite3 File을 확인해 보면 다음과 같이 Members의 SQL Statement가 생성된 것을 확인할 수 있습니다.

위와 같은 과정을 통해 Members Table은 생성했지만, 빈 Table이므로 member들을 추가해 줄 필요가 있습니다.

추가해 주는 방법은 크게 두 가지가 있습니다. 첫 번째는 CRUD(= Create, Read, Update, Delete)를 고려하여 User Interface를 만들어 사용하는 것이고 두 번째는 Python Interpreter(= Python Shell)을 이용하는 방법입니다.

우선, Python Shell을 이용해 member를 추가해 보도록 합시다. 다음과 같은 순서대로 명령어를 실행합니다.

>> py manage.py shell

>>> from members.models import Members

# look at the empty Mebers table -> return : empty QuerySet object = <QuerySet []>
# QuerySet은 database로 부터의 data collection이다.
>>> Members.objects.all()

# Add a record to the table
>>> member = Members(firstname='Emil', lastname='Refsnes')
>>> member.save()

# Print member in Members table -> return : <QuerySet [{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}]>
>>> Members.objects.all().values()

위 코드를 통해 Members Table에 1명의 member를 추가할 수 있습니다.

다음은 여러 명의 members를 추가하는 Code입니다.

>>> member1 = Members(firstname='Tobias', lastname='Refsnes')
>>> member2 = Members(firstname='Linus', lastname='Refsnes')
>>> member3 = Members(firstname='Lene', lastname='Refsnes')
>>> member4 = Members(firstname='Stale', lastname='Refsnes')
>>> members_list = [member1, member2, member3, member4]
>>> for x in members_list:
>>>   x.save()

>>> Members.objects.all().values()
# return : <QuerySet [{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'},{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'}, {'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'}, {'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'}, {'id': 5, 'firstname': 'Stale', 'lastname': 'Refsnes'}]>

위 과정을 통해 member들을 추가했다면 이를 Web Page에서 보고 싶겠죠? 이를 위해 특정한 일을 처리하는 View를 생성해야 합니다.

members App에서 views.py File을 Open 하여 다음과 같이 수정합니다.

from django.http import HttpResponse
from django.template import loader
from .models import Members

def index(request):
  mymembers = Members.objects.all().values()
  output = ""
  for x in mymembers:
    output += x["firstname"]
  return HttpResponse(output)

Members Model에서 member들의 Data를 Load 하고 member의 Data 중 firstName만을 출력하는 코드입니다.

이를 적용하고 server를 run 하면 다음과 같은 결과를 얻을 수 있습니다.

Result - 3

 

 

 

 

 

앞서, view를 통해서 출력하였습니다. 그러나 단순히 Text만 나열하는 형태이기에 그리 보기 좋지는 않습니다. 따라서 값에 HTML을 추가하기 위해 Application에 대한 Template를 생성해 보도록 합니다. 모든 Template는 APP의 Templates Folder에 위치해야 합니다.

templates Folder에 index.html File을 생성하고 다음과 같이 작성합니다.

<h1>Members</h1>

<table border="1">
{% for x in mymembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
</tr>
{% endfor %}
</table>

위 코드 중에서, {%    %}{{    }}부분은 template tags라고 하는데, 이는 Template에서 Logic을 수행하고 변수들을 Render 할 수 있도록 합니다.

이후, member의 views.py를 다음과 같이 수정합니다.

from django.http import HttpResponse
from django.template import loader
from .models import Members

def index(request):
  mymembers = Members.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mymembers': mymembers,
  }
  return HttpResponse(template.render(context, request))

 

모든 값들이 Members Model인 mymembers Object를 생성하고 index.html Template를 Load 한 후 mymember Object를 포함하는 Object를 생성합니다. 이 Object를 Template에 보내고 해당 Template로 Render 된 HTML을 출력합니다.

정상적으로 동작하면 127.0.0.1:8000/members/를 통해 다음과 같은 결과를 확인할 수 있습니다.

Result - 4

지금까지 Database에 Members Table을 만들었으며 Python Shell에 코드를 작성하여 5개의 Record를 삽입했습니다. 또한 Web Page에 표의 내용을 표시할 수 있는 Template을 만들었습니다.

 

앞서 members를 추가하기 위해서는 크게 두 가지 방법이 있다고 하였고 Python Shell을 이용해 추가하는 방식은 수행해 보았습니다. 이제는 Web Page로부터 새로운 member를 생성하는, 즉 User Interface를 이용해 추가하는 방식을 수행하고자 합니다.

우선, members template의 index.html를 다음과 같이 수정합니다. Add member를 Click 하면 add Page로 이동될 수 있도록 하기 위한 Code입니다.

<h1>Members</h1>

<table border="1">
{% for x in mymembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
</tr>
{% endfor %}
</table>

<p>
<a href="add/">Add member</a>
</p>

 

templates Folder에 새로운 template인 add.html을 생성하고 다음과 같이 작성합니다.

<h1>Add member</h1>

<form action="addrecord/" method="post">
{% csrf_token %}
First Name:<br>
<input name="first">
<br><br>
Last Name:<br>
<input name="last">
<br><br>
<input type="submit" value="Submit">
</form>

이 template는 두 개의 Input Fields와 Submit Button을 포함합니다. 그리고 {% csrf_token %}은 Method가 POST인 양식에서 교차 사이트 요청 위조를 처리합니다.

 

이제 이를 적용하기 위해 Members APP의 views.py를 다음과 같이 수정합니다.

from django.http import HttpResponse
from django.template import loader
from .models import Members

def index(request):
  mymembers = Members.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mymembers': mymembers,
  }
  return HttpResponse(template.render(context, request))
  
def add(request):
  template = loader.get_template('add.html')
  return HttpResponse(template.render({}, request))

그리고 members/urls.py File을 다음과 같이 수정합니다. 이는 위의 add function 결과가 출력되는 Path를 127.0.0.1:8000/members/add/로 지정하는 코드입니다.

from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
  path('add/', views.add, name='add'),
]

 

정상적으로 수행된다면 다음과 같은 결과를 얻을 수 있습니다.

Result - 5

 

 

 

 

 

앞서 작성한 add.html에는 action attribute가 포함되어 있습니다. 이는 Form data를 어디에 보낼 것인지 구체화합니다. 작성한 코드의 경우, <form action="addrecord/" method="post">이므로 이 Form data는 addrecord에 보내질 것입니다. 따라서 members/urls.py는 다음과 같은 수정이 필요합니다.

from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
  path('add/', views.add, name='add'),
  path('add/addrecord/', views.addrecord, name='addrecord'),
]

addrecord라는 View에 대한 URL을 지정했지만 아직 view를 만들진 않았습니다. 따라서 addrecord view를 추가하기 위해 members/views.py File을 다음과 같이 수정합니다.

from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.urls import reverse
from .models import Members

def index(request):
  mymembers = Members.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mymembers': mymembers,
  }
  return HttpResponse(template.render(context, request))
  
def add(request):
  template = loader.get_template('add.html')
  return HttpResponse(template.render({}, request))
  
def addrecord(request):
  x = request.POST['first']
  y = request.POST['last']
  member = Members(firstname=x, lastname=y)
  member.save()
  return HttpResponseRedirect(reverse('index'))

addrecord는 우선, request.POST statement로 이름과 성을 Get 하고 members table에 새로운 record를 추가합니다. 그리고 사용자를 index view에 Redirect 합니다.

 

수행 결과는 다음과 같습니다.

Result - 6

추가 기능을 만들었으니, 삭제도 하고 싶겠죠? 이를 위한 과정은 다음과 같습니다.

우선, template를 수정합니다. index.html을 다음과 같이 수정하여 해당 표에 속한 member를 delete 할 수 있도록 합니다.

<h1>Members</h1>

<table border="1">
{% for x in mymembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
<td><a href="delete/{{ x.id }}">delete</a></td>
</tr>
{% endfor %}
</table>

<p>
<a href="add/">Add member</a>
</p>

html에서 생성한 delete를 127.0.0.1:8000/members/delete/에 연결합니다.

members/urls.py를 다음과 같이 수정하여 url로 넘길 때 id를 Parameter로 넘길 수 있도록 합니다.

from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
  path('add/', views.add, name='add'),
  path('add/addrecord/', views.addrecord, name='addrecord'),
  path('delete/<int:id>', views.delete, name='delete'),
]

 

template과 url 부분을 수정하였고 이제 view 부분을 수정합니다. members/views.py에 delete 기능을 추가합니다.

from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.urls import reverse

from .models import Members

def index(request):
  mymembers = Members.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mymembers': mymembers,
  }
  return HttpResponse(template.render(context, request))
  
def add(request):
  template = loader.get_template('add.html')
  return HttpResponse(template.render({}, request))
  
def addrecord(request):
  x = request.POST['first']
  y = request.POST['last']
  member = Members(firstname=x, lastname=y)
  member.save()
  return HttpResponseRedirect(reverse('index'))

def delete(request, id):
  member = Members.objects.get(id=id)
  member.delete()
  return HttpResponseRedirect(reverse('index'))

id 값을 Argument로 Get 하고 이를 이용해 Members Table에서 올바른 Record를 찾습니다. 그리고 해당 Record를 삭제하고 User에게 index View를 Redirect 합니다.

 

구현한 결과는 다음과 같다.

Result - 7

 

추가, 삭제까지 만들었습니다. 이제는 수정만 만들면 기본적인 기능을 모두 구현해 보는 것입니다.

 

수정 부분은 다음과 같습니다.

수정 기능을 추가하기 위해 index.py Template를 다음과 같이 수정합니다.

<h1>Members</h1>

<table border="1">
{% for x in mymembers %}
<tr>
<td><a href="update/{{ x.id }}">{{ x.id }}</a></td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
<td><a href="delete/{{ x.id }}">delete</a>
</tr>
{% endfor %}
</table>

<p>
<a href="add/">Add member</a>
</p>

ID 값을 누르면 update를 수행하는 page로 이동되며, 이때 id 값을 Parameter로 전달합니다.

 

다음으로 members/views.py에 update Page로 이동되는 기능과 update 작업을 수행하는 updaterecord 기능을 추가합니다.

from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.urls import reverse
from .models import Members

def index(request):
  mymembers = Members.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mymembers': mymembers
  }
  return HttpResponse(template.render(context, request))
  
def add(request):
  template = loader.get_template('add.html')
  return HttpResponse(template.render({}, request))
  
 def addrecord(request):
  first = request.POST['first']
  last = request.POST['last']
  member = Members(firstname=first, lastname=last)
  member.save()
  
return HttpResponseRedirect(reverse('index'))

def delete(request, id):
  member = Members.objects.get(id=id)
  member.delete()
  return HttpResponseRedirect(reverse('index'))
  
def update(request, id):
  mymember = Members.objects.get(id=id)
  template = loader.get_template('update.html')
  context = {
    'mymember': mymember,
  }
  return HttpResponse(template.render(context, request))

def updaterecord(request, id):
  first = request.POST['first']
  last = request.POST['last']
  member = Members.objects.get(id=id)
  member.firstname = first
  member.lastname = last
  member.save()
  return HttpResponseRedirect(reverse('index'))

member의 id를 click 하면 update.html template로 이동되어야 합니다. 따라서 templates Folder에 update.html을 생성하고 다음과 같이 작성합니다.

<h1>Update member</h1>

<form action="updaterecord/{{ mymember.id }}" method="post">
{% csrf_token %}
First Name:<br>
<input name="first" value="{{ mymember.firstname }}">
<br><br>
Last Name:<br>
<input name="last" value="{{ mymember.lastname }}">
<br><br>
<input type="submit" value="Submit">
</form>

그리고 members/urls.py File을 다음과 같이 수정하여 update를 view에 연결합니다.

from django.urls import path

from . import views

urlpatterns = [
  path('', views.index, name='index'),
  path('add/', views.add, name='add'),
  path('add/addrecord/', views.addrecord, name='addrecord'),
  path('delete/<int:id>', views.delete, name='delete'),
  path('update/<int:id>', views.update, name='update'),
	path('update/updaterecord/<int:id>', views.updaterecord, name='updaterecord'),
]

 

추가적으로 views에 작성한 updaterecord의 기능이 정상적으로 동작할 수 있도록 view의 updaterecord를 연결합니다.

전반적인 결과는 다음과 같습니다.

Result - 8

 

 

이렇게 단계적으로 Django를 이용해 간단한 회원가입 비슷한 무언가를 만들어 보았습니다.

Django가 구동되는 Structure만 잘 고려한다면 기능 구현 부분은 정말 쉽게 수행할 수 있었습니다. Django의 특성이 Front와 Back-End의 약간 경계 없는 구현 구조를 이루고 있기에 Full-Stack 개발자를 꿈꾸는 개발자분들이 많이 사용한다고 하더라고요. 진입장벽도 비교적 낮고요 ㅎ 저도 큰 문제없이 다룰 수 있었으니...

Django는 여기까지 다뤄보도록 하겠습니다.

이를 바탕으로 좀 더 쓸만한 서버를 만들어보면 좋을 것 같습니다!

 

 

반응형

댓글