Server/Django project 1 - shopping mall

4. Django admin 구성 (관리자 페이지)

개발자킹콩 2020. 9. 16. 03:18

 admin 구성 (관리자 페이지)

Django admin 이 무엇인지  보고 우리가 만든 모델을 적용해서 사용해보자.

각 app에 있는 admin.py를 수정해서 등록을 해줘야한다.

 

기본적으로 settings.py에 admin은 설정이 되어있다.

프로젝트 생성 시 자동으로 생성되는 urls.py에도 기본적으로 admin은 들어가 있다.

setting.py
urls.py

의미를 설명하자면 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를 생성한 것이다.

app shopuser의 admin.py 이다.
app product의 admin.py이다.

admin 페이지에서는 각각의 modeling된 데이터들이 쌓여 있을 것이고

이것을 쉽게 관리할 수 있는 페이지이다.

즉, 데이터들이 list형식으로 잘 정렬되어있는데 특정 하나의 데이터에도 많은 데이터들이 존재할 것이고

이것을 모두 list형식으로 볼 필요는 없다. 구분할 수 있는 데이터들만 봐도 괜찮기 때문이다.

예를 들어, 대학에서 학생들의 데이터를 관리한다고 할 때, 개개인의 학번, 이름, 전화번호, 주소 등

많은 세부정보들은 엑셀처럼 전부 보는 것이 아닌 클릭했을때 보이게 하는 것이다.

그리고 서로 구분을 할 수 있는 학번, 이름 정도만 list에 표시하는 것이다.

 

 

 

admin페이지
product list

admin 페이지에서 product list display를 상품명과 상품가격을 표시하도록 설정하였기에,

데이터가 다음과 같이 나온다. (아! 이 데이터는 내가 추가한거임) 

 

 

 

 

마지막으로 하나 알려드리고 admin 구성을 마무으리 하려 한다.

shopuser models.py

여기서 "def __str__(self)" 를 설정한 이유는 해당 함수가 없으면 아래와 같은 상황이 나와서,

어떤 객체인지를 구분할 수 없는 경우가 발생한다.

model을 foreignkey로 해서 불러 왔는데 무엇인지 알수가 없네..

즉, 관리자는 어떤 유저가 어떤 물건을 주문하는지 구분할 수 없게 된다.

그렇기에 파이썬에서는 클래스가 문자열로 변환했을 때 어떻게 변환을 할지 구분할 수 있게

내장함수 __str__ 가 준비되어 있기에 이를 사용한다.

admin 페이지의 key를 이용한 Order 데이터의 경우 이름이 지정되지 않고 

클래스의 객체 표시로 지정되기에 위와 같이 설정한 것이다.

 

이렇게 되면 다음과 같이 정상적인 이름 구분이 가능하다.

 

 

오늘도 감코!