4. Django admin 구성 (관리자 페이지)
admin 구성 (관리자 페이지)
Django admin 이 무엇인지 보고 우리가 만든 모델을 적용해서 사용해보자.
각 app에 있는 admin.py를 수정해서 등록을 해줘야한다.
기본적으로 settings.py에 admin은 설정이 되어있다.
프로젝트 생성 시 자동으로 생성되는 urls.py에도 기본적으로 admin은 들어가 있다.
의미를 설명하자면 admin안에는 여러가지 url들이 정의가 되어있고,
그것들을 프로젝트 안에서 admin 하위 ( admin/{여기} ) 로 지정하는 것이다.
(관리자 페이지에서도 여러가지 url들을 사용하고, 또 그것들이 admin안에 정의가 되어있다.)
그렇기에 우리가 주소를 입력할 때, admin 하위에 들어가는 주소들은
admin.site.urls 안에 정의된 url을 따라간다.
예를들어 aaa.com/admin/asdfg --> admin하위에 있는 asdfg를 admin.site.urls에 연결한다는 뜻이다.
중요한 것은 Django에서는 관리자(admin) 페이지를 따로 만들지 않고,
적절한 설정만 해준다면 간단하게 만들어서 유용하게 사용할 수 있다는 것이다.
[실습]
이제 서버를 돌려서 해당 admin 페이지에 들어가보자.
"https://127.0.0.1:8000/admin" 로 GoGo!!!
?????가입을 하지도 않았는데 로그인?????
Django에서는 관리자 페이지를 관리할 superuser을 생성할 수 있다.
로그인은 superuser로 로그인을 하면 된다.
admin.py에 해당 페이지에서 사용하는 model과 model admin 클래스를 등록하고 superuser를 생성하자!!
$ python manage.py createsuperuser
여기서 간단한 회원가입 절차로 admin을 관리할 superuser를 생성한 것이다.
admin 페이지에서는 각각의 modeling된 데이터들이 쌓여 있을 것이고
이것을 쉽게 관리할 수 있는 페이지이다.
즉, 데이터들이 list형식으로 잘 정렬되어있는데 특정 하나의 데이터에도 많은 데이터들이 존재할 것이고
이것을 모두 list형식으로 볼 필요는 없다. 구분할 수 있는 데이터들만 봐도 괜찮기 때문이다.
예를 들어, 대학에서 학생들의 데이터를 관리한다고 할 때, 개개인의 학번, 이름, 전화번호, 주소 등
많은 세부정보들은 엑셀처럼 전부 보는 것이 아닌 클릭했을때 보이게 하는 것이다.
그리고 서로 구분을 할 수 있는 학번, 이름 정도만 list에 표시하는 것이다.
admin 페이지에서 product list display를 상품명과 상품가격을 표시하도록 설정하였기에,
데이터가 다음과 같이 나온다. (아! 이 데이터는 내가 추가한거임)
마지막으로 하나 알려드리고 admin 구성을 마무으리 하려 한다.
여기서 "def __str__(self)" 를 설정한 이유는 해당 함수가 없으면 아래와 같은 상황이 나와서,
어떤 객체인지를 구분할 수 없는 경우가 발생한다.
즉, 관리자는 어떤 유저가 어떤 물건을 주문하는지 구분할 수 없게 된다.
그렇기에 파이썬에서는 클래스가 문자열로 변환했을 때 어떻게 변환을 할지 구분할 수 있게
내장함수 __str__ 가 준비되어 있기에 이를 사용한다.
admin 페이지의 key를 이용한 Order 데이터의 경우 이름이 지정되지 않고
클래스의 객체 표시로 지정되기에 위와 같이 설정한 것이다.
이렇게 되면 다음과 같이 정상적인 이름 구분이 가능하다.