티스토리 뷰

Django(장고)

Django - 3. Models 과 admin 만들기

브라이언77 2019. 11. 25. 12:57
반응형

Django - 3. Models 과  admin 만들기

 

Django 에서 models 은 데이타를 말하는 것이다. shop 앱에서 필요한 데이터를 models 에서 정의해 주면된다. 

 

- Cetagory model

- Product model

Category 와 Product 모델의 경우 image 필드가 있는데, image 의 경우 데이터 생성시에 해당 이미지를 저장할 곳을 지정해 주어야 한다. 

upload_to = "category" , upload_to = "product" 

그럼 Django 에서 category / product 경로의 경우 어디로 저장할 것인지 알아야 하는데, 이 부분을 settings.py 에서 설정하게 되었다. 

BASE_DIR

os.path.join() 함수는 여러개의 경로위치를 붙여서 하나의 path 로 만들어주는 함수이다. BASE_DIR 을 settings.py 파일 위쪽에 보면 정의되었고,  프로젝트의 기본 위치라 생각하면된다. 

 

category 및 product 생성시에 이미지 파일은  BASE_DIR/static/media 에 저장될 것이다. 이 부분은 데이터 생성하고 실제 파일이 어디에 위치하는지 직접 확인해 보면 확실히 이해가 될것이다. 

 

다음은 사용자의 요청, 즉 브라우저에서 /static/ or /media/ 에 대한 요청이 왔을때, 문서에 대한 위치를 지정해 주는 코드이다. 

urls.py

다음은 Pillow 패키지 설치 ... ( 왜 설치해야하는지 ... ㅠㅠ. ) , 어디에 사용되는지 아직 확인되지 않음. 

 

## Pillow 패키지 : ImageField 사용을 위해서 pillow package 설치한다. 

 

이제 지금까지 만든 models(Category, Product) 에 대한 내용을  db 에 적용하기 위해서는 makemigrations > migrate 해주어야 한다. 

- makemigrations : 변경사항에 대한 이력을 작성

- migrate : 변경된 내용을 DB 에 적용

shop > migrations > 0001_initial.py 파일을 확인해 보면, 변경 사항에 대한 내용을 확인할수 있다. 

0001_initial.py

변경된 내용을 DB 에 적용(동기화)하기 위해서 migrate 를 실행한다.

다음은 Django 에서 제공하고 있는 admin 기능을 통해서 데이터에 접근하고, 필요한 경우 데이터 추가/수정/삭제 하는 기능을 확인해 보자. admin 웹에 접근하기 위해서는 superuser 권한이 필요하다. 다음과 같이 superuser를 하나 만들고 이를 이용해서 admin 웹에 접근해 보자. 

수퍼유저 만들기

username, email, password 를 입력하면 superuser 가 만들어지고 서버를 다시 구동하고 admin 웹에 접속해보자

서버 재구동

새로운 models 을 만들고 서버를 재구동했지만 admin 웹에서는 Groups/ Users 에 대한 내용만 확인할수 있다. 그러면 우리가 만든 models(Category/Product) 를 admin 웹에서 보이게 하기 위해서는 shop > admin 에 해당 models 을 등록 시켜주어야 한다. 

그리고 서버를 재구동하고 다시 admin 웹을 확인해 보면 추가된 shop 모델을 확인할수 있다. 

admin 웹을 통해서 등록된 모듈은 add / change 또한 가능하다. 

 

카테고리 추가하기 

카테고리 추가

제품 추가하기

Product 추가

파일명을 클릭하면 이미지를 확인할수 있다. 

 

upload 된 이미지는 /media/product/black_urban.jpg 와 같은 url 경로를 가지고 접근할수 있고, 이미지 파일은 실제로 perfectcushion > static > media 폴더 아래 저장되어 있는 것을 볼수 있다.

이미지 저장 폴더

여기까지해서 모델을 생성하고 Admin 에 등록해서 관리하는 것까지 마쳤습니다. 끝. 

 

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함