본문 바로가기
  • 가제가재_기록블로그
django

django Basic Prac02_02 Db + Create

by 가제가재 2023. 8. 9.

Django 두 번째 연습예제 - CRUD 시작하기 01

이전 페이지에서 django 프로젝트 시작과 앱 두개를 세팅, 웹 페이지 확인까지 했다.

이제 웹 페이지의 기능을 구현하고, SQLite 와 연동하자!

 

현재 작업하는 프로젝트에는 두 가지 모델을 연결 할 생각이다.

첫 번째는 category 에 대한 것,

두 번째는 restaurant 에 대한 것이다.


23.08.09 - 작성 시작


목차

  • 1. Database 연결하기
  • 2. CRUD - Create 구현하기

시작하기 전에


시작하기


1. Database 연결하기

1-1. Database 연결을 위해 Models.py 를 작업한다.

첫 번째 모델 -category 를 생성한다.

이 모델이 가질 값은 하나, [카테고리 이름] 뿐이다.

 

이 때 카테고리에는 이름 뿐만 아니라 기타 정보들도 포함 되지 않을까? 라는 의문이 든다.

개발 방법론에 대해선 많은 의견들이 있지만, 현재 기반이 되는 서적을 집필하신 문범우 개발자님 의 의견에 따르자면 (다수의 맛집 : 카테고리) 가 아닌 (하나의 맛집 : 카테고리) 이런 방법으로 프로젝트를 구현 할 예정이다.

이 것에 대한 자세한 이야기는 두 번째 모델 - restaurant 에서 다룬다.

 

일단 첫 번째 모델에서는 category 내부에는 오직 하나의 값, category_name 만 들어간다.

 

from django.db import models

# Create your models here.
class Category(models.Model):
    category_name = models.CharField(max_length= 100)

 

1-2. migration 만들기

터미널 창에서 migration을 만든다.

python manage.py makemigrations


 

1-3. migrate 하기

마찬가지로 터미널 창에서 migrate 한다.

python manage.py migrate

migrate 가 실행되며 '0001_initial.py' 파일이 생성되었다.

 

그런데 주석의 시간이 만든 시간이랑 다른데.. 시스템 시간이 다른걸까. 확인해봐야한다.


2. CRUD - Create 구현하기

현재 카테고리 추가 - [추가] 버튼을 누르면 404 에러가 나온다.

로직을 구현하자!


2-1. Create 로직 구현하기 - urls.py

categoryCreate html 에 들어가 [추가] 를 찾아보면 정보를 찾을 수 있다.

저 버튼을 누르면 "./create" url 이 생성, 메서드는 POST 방식이다.

 

그 외 이름이나 클래스 등을 확인하고 이제 urls.py 로 이동해 버튼을 누르면 활성화 되는 로직의 링크를 만들자.

 

이름이 헷갈리니 위에서 조금, html에서 조금씩 복붙했다.

 


 

2-2. Create 로직 구현하기 - views.py

urls로 연결했으니 이제 함수를 만들자.

음 잘돈다.

연결 확인은 했으니 진짜 모델로 보내 Db에 넣어보자.

def Create_category(request):
    # return HttpResponse("It is Create_category Page......")
    category_name = request.POST['categoryName']  # HTML 파일의 텍스트 박스 내용을 가져옴
    new_category = Category(category_name = category_name)#모델 객체 생성, POST에서 가져온 값을 객체에 넣음
    new_category.save() # 객체 저장
    return HttpResponseRedirect(reverse('index')) # 다시 첫페이지로

 

HttpResponseRedirect 는  항상 헷갈린다... 링크를 걸었으니 다시 확인하자.

reverse() 는 django 1.10 에서 추가 된 기능이랜다.

 

웹 페이지를 확인하면..

 

 

HttpResponseRedirect(reverse('index')) 때문에 첫 페이지로 돌아왔다.

 

Db에 들어가긴 한걸까..

확인 해보자


2-3. dbshell 확인하기

오류) 만약 sqlite3 오류가 나왔다면 이 페이지를 확인하자.

 

데이터 Create 확인을 위해 잠시 터미널로 돌아와

dbshell 을 실행하자.

python manage.py dbshell

 

- dbshell table(테이블) 확인

. table

 

- 테이블 데이터 확인

SELECT * FROM shareRes_category;

성의없는 이름이라 헷갈리지만 제대로 들어간게 맞다... 이럴 줄 알았으면 예쁜 이름으로 넣을걸

 

(번호) | (이름)

의 구성이다.

 


마무리

Db를 만들고 Create 한 후 확인까지 해보았다.

이 다음 포스트에서는 웹페이지에서 Read 기능을 추가하려 한다.

'django' 카테고리의 다른 글

django Basic Prac02_03 Read + Delete  (0) 2023.08.13
django Basic Prac01_03 CRUD  (0) 2023.08.03
django Basic Prac01_02 CRUD  (0) 2023.07.26
django Basic Prac01 _ 01프로젝트 시작하기  (0) 2023.07.26