데이터 분석가
article thumbnail
Published 2023. 7. 27. 13:16
Django를 통한 웹개발(3) Django

교재홍보

  • 다음의 교재를 바탕으로 실습이 이루어질 예정이다.

교재 구매 : https://www.yes24.com/Product/Goods/83568594

이번 글이 처음이라면, 먼저 이전 블로그를 읽어보기를 바란다.

이번글에서는 Model(DB)에 대해 다뤄볼 것이다.

 

1. Test > my_test_app > models.py경로에 다음과 같이 코드를 작성해준다.

 

 

2. 모델의 변경사항을 DB에 적용하기 위해 다음의 코드를 실행한다.

 

$ python manage.py makemigrations
	# migration 생성
$ python manage.py migrate
	# migration 적용

 

3. 아래 코드를 통해 실제 Django 프로젝트 DB에 접근해보고 테이블을 확인해본다.

 

$ python manage.py dbshell
	# DB에 접근   
$ sqlite> .tables
	# table이 만들어졌는지 확인
$ sqlite> PRAGMA table_info(my_test_app_todo);
	# table 정보를 확인
$ sqlite> select * from my_test_app_todo;
	# table내의 데이터를 조회해본다. 지금은 데이터가 없기 때문에 조회되지 않는다.

 

4. 만약 $ python manage.py dbshell 코드 실행 시 다음과 같은 오류가 발생한다면

CommandError: You appear not to have the 'sqlite3' program installed or on your path.

 

윈도우 10 환경 기준으로 https://www.sqlite.org/download.html에 접속하여

sqlite-tools-win32-x86으로 시작하는 파일을 다운로드하여

압축을 풀면 나오는 세가지 파일을 다음과 같이 manage.py와 같은 경로에 배치해주면 해결된다.

 

아래부터는 웹(View)에서 이루어지는 요청이 DB(Model)에 기록되도록 할 것이다.

 

5. 이를 위해 my_test_app > index.html을 열어보자.

44번째 줄의 form태그를 확인하면 Django에서 POST방식을 사용 하기 위해서 {% csrf_token %}를 적어준다.

 

 

6. 서버에 데이터 전달을 하기 위해 다음의 코드를 작성한다.

이로 인해 웹상에서 메모하기를 누르면 createTodo라는 정해진 URL로 전달된다.

<form action = 'createTodo' method='POST'>
	# action은 어떤 URL로 데이터를 전달할 것인지를 나타낸다.

 

 

7. 웹에서 이루어진 사용자 요청을 Controller(views.py)로 전달하기 위해 my_test_app > urls.py 에서 코드를 수정해준다.

 

urlpatterns = [
    path('', views.index), 
    path('createTodo/', views.createTodo) # 새로 추가
]

 

8. my_test_app의 urls.py에서 설정한 createTodo함수를 views.py에서 만들어준다.

 

def createTodo(request):
    user_input_str = request.POST['todoContent']
    	# input태그의 id인 todoContent를 이용해 사용자가 입력한 데이터를 user_input_str에 할당한다.
    return HttpResponse("create Todo를 할 거야! => " + user_input_str)
    	# 웹상에 user_input_str을 반환해준다.

 

9. 이제 웹페이지에서 메모하기 버튼을 누르면 다음과 같은 결과가 나온다.

 

 

'Django' 카테고리의 다른 글

Django - 엑셀계산 사이트 만들기(1)  (0) 2023.07.31
Django를 통한 웹개발(5)  (0) 2023.07.27
Django를 통한 웹개발(4)  (0) 2023.07.27
Django를 통한 웹개발(2)  (0) 2023.07.27
Django를 통한 웹개발(1)  (0) 2023.07.26
profile

데이터 분석가

@이꾹꾹

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!