수학과의 좌충우돌 프로그래밍

[Django] 04. model 과 admin 본문

웹프로그래밍/Django

[Django] 04. model 과 admin

ssung.k 2019. 2. 14. 02:30

안녕하세요 강민성입니다.


이번에는 model 과 admin 을 배워보도록 하겠습니다.


model 은 django가 데이터베이스를 관리하게끔 해주고


admin 은 이런 model을 관리하는 역할을 합니다.


이제 이들에 대해서 자세히 알아보겠습니다.



model 과 admin 을 알아보자




기본 세팅 및 복습


새로운 디렉토리에서 실습을 진행하겠습니다.


그리고 이번 실습부터는 앞의 내용과 겹치는 부분은 과감하게 생략하고 넘어가겠습니다.


가상환경을 켜고


secondproject 라는 이름의 project를 만들고,


blog 라는 앱을 만들고,


setting.py 에 앱을 등록해주었습니다.


현재 진행상황은 다음과 같습니다.


    



원하는 데이터 등록


이제는 blog 앱 안에 있는 models.py 로 가서


 우리가 처리하고 싶은 데이터의 종류를 적어주도록 하겠습니다.


종류를 적을 때는 python 의 class 개념을 이용해서 등록을 해주게 됩니다.


그러면 코드를 보기 전에 왜 class 를 쓰는지 생각을 해보겠습니다.


앱 이름에서 봤듯이 지금 우리는 blog를 만들기 위한 작업을 하고 있습니다.


그리고 포스팅을 할 때마다 models..py 에 등록된 데이터를 보고 어떤 데이터로 글을 써야하는지


결정을 하게 될 것 입니다.


그렇게 때문에 models.py에 class로 데이터를 등록하고,


 각 포스팅은 이 class의 인스턴스가 된다고 생각하면 되겠습니다.




models.py 를 보며 설명을 해보도록 하겠습니다.


위에서 말했듯이 Blog 라는 이름으로 클래스를 정의했습니다.


통상적으로 models 에서 class 이름은 맨 앞을 대문자로 표기합니다.


그리고 인자로 models.Model 을 받게 되는데


이를 통해서 models 은 Blog가 장고 모델임을 알게 됩니다.


그리고 이 때문에 데이터베이스에 저장을 할 수 있게 되는 것이죠.


이는 아 그렇구나 하고 넘어가셔도 좋을 듯 합니다.



다음으로는 models 의 field 들이 나옵니다.


field 는 위에 3개를 제외하고도 굉장히 많은데 상황에 맞는 field 를 써주시면 됩니다.


title은 별로 길지 않을테니 짧은 문장을 담는 CharField


pub_date는 날짜를 담을 DateField


body는 글의 내용으로 긴 글이 올테니 TextField 를 사용해주었습니다.





django 와 데이터 베이스를 연동시키기



django 과 데이터베이스는 엄연히 별개의 존재입니다.


그래서 본인 취향에 맞는 다양한 데이터베이스를 취사 선택 할 수도 있습니다.


settings.py 에 보면 데이터베이스에 관한 설정이 있습니다.


django는 데이터베이스 초기값으로 splite3를 사용하고 있으며 아래 코드에서도 확인할 수 있습니다.




이제 이를 연동시키기 위해서는 terminal에서 등록을 해줘야합니다.


python manage.py makemigrations


blog 앱 밑에 migrations 이라는 폴더를 생성하여 django와 데이터베이스가 서로 소통할 수 있게 해줍니다.


python manage.py migrate

데이터베이스에 최신 models 를 적용시키는 명령어 입니다.




admin 계정 만들기



이제 우리가 데이터베이스에 접근 할 수 있도록


admin 계정을 만들어 보겠습니다.


이 역시 terminal 에서 진행됩니다.


user를 생성하는 명령어는


python manage.py createsuperuser


명령어를 입력하면 아래 화면과 같이 이름, 메일, 비밀번호를 치게 됩니다.


여기서 주의할 점은 비밀번호는 아무리 입력해도 저렇게 아무런 변화도 일어나지 않습니다.


따라서 조심히 입력해주시길 바랍니다.



admin 사이트


계정까지 만들었으니 이제 로그인을 해봐야겠죠?


먼저 서버를 돌려준 후, 


localhost:8000/admin


admin 사이트로 접속하여 로그인을 해주면 아래 화면을 볼 수 있을 겁니다.


이 곳이 admin 사이트로 우리가 만들 django 서버의 데이터들을 관리하게 됩니다.


하지만 아무리 찾아봐도 우리가 원하는 blog 에 글을 입력하는 공간은 없어보입니다.


그 이유는 아직 admin에 models 를 등록하지 않아서 입니다.


등록하는 코드는 아래와 같습니다.




그 후 다시 admin 사이트에 접속하면


blog 를 새로 추가할 수 있는 칸이 생겼습니다.


Blogs 로 들어가서

다시 ADD BLOG 해준다면


우리가 설정한 model 에 따라서 정보를 입력할 수 있습니다.


다음과 같은 내용으로 save를 해보겠습니다.

blog object 즉 글이 만들어졌지만 저런 식으로 표현이 된다면


어떤 글인지 알아보기 힘들겁니다.

그래서 __str__ 함수를 사용하여 우리가 원하는 모양으로 바꿔줄 수 있습니다.


__str__ 함수는 인스턴스 자체를 출력할 때 그 모양을 바꿔주는데


여기서는 title로 표시되도록 하겠습니다.



그 결과 제목으로 표시되는 걸 확인할 수 있습니다.


마무리



점점 새로운 내용, 낯선 내용이 많아질 겁니다.


항상 질문과 조언은 감사하게 받아들이겠습니다.


언제든지 질문해주세요 ;)

Comments