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 |