티스토리 뷰

모델 파일과 가장 연관이 깊은 어드민 파일

저번 포스팅의 말미에서도 언급했지만 모델 파일의 내용을 정의하면서 가장 많이 보는 파일은 어드민 파일일 것입니다. 모델에서 정의한 것을 어드민 화면에서도 보기 위해서 입니다. 이번 포스팅에서는 하나하나씩 바꿔보면서 어드민 화면을 커스텀 해보도록 하겠습니다.

우선 어드민 화면의 제목을 바꿔봅시다.

장고 어드민 페이지 제목장고 어드민 페이지 제목


localhost:8000/admin을 입력하면 어드민 페이지에 접속가능합니다. 로그인 창에는 우리가 슈퍼유저 명령어로 만들었던 유저로 접속할 수 있습니다. 접속하면 모두 똑같은 제목을 보게 됩니다. Django administration이라고 적힌 투박한 제목입니다. 우선은 이 부분을 바꿔보도록 하겠습니다.



admin.py를 확인해보시면 기본적으로 admin을 불러오고 있습니다. 우리가 만든 모델들도 models.py에서 불러와주세요. 기본적으로 있는 admin을 통해서 제목을 바꿀 수 있습니다. 문자 부분을 마음에 드는것으로 바꿔주세요.


제목 바꾸기바뀐 화면


새로고침을 하면 제목이 바뀐 것을 확인할 수 있습니다.



어드민의 템플릿을 가져와서 바꿀수도 있지만 간단한 것들이라면 이렇게 명령어 한번으로 바꿀 수 있습니다. 어드민 페이지 자체가 너무 마음에 들기 때문에 다른 것들은 딱히 바꿀 마음이 생기지 않기 때문에 이 정도로만 바꿔보도록 하겠습니다.

모델을 등록해봅시다.

이제는 우리가 만든 모델을 어드민 페이지에 등록해볼 차례입니다.



모델을 불러온 뒤에 register의 인수로 전달하기만 하면 어드민 사이트에서 바로 확인할 수 있게 보여집니다.


register 함수 활용기본 등록 화면


이렇게 간단하게 등록할 수 있습니다. Books나 Wisesayings를 클릭해보세요. 표 형식으로 이미 잘 나타나 있습니다. ADD 버튼을 누르면 데이터를 저장할 수도 있습니다. 우리가 적은 코드에 비해서 아주 훌륭한 사이트가 만들어졌죠?


책 추가책을 추가한 모습입니다.


저처럼 책을 추가해보세요. 저는 세권의 책을 추가했습니다. 하시는 김에 책에 나오는 글귀도 Wisesayings에 추가해보세요. 책을 등록하셨다면 wisesaying에서 book에는 기존에 추가한 값을 넣을 수 있습니다. 아니면 옆의 add로 새 책을 추가할 수도 있습니다. 


저런 모습으로 끝내기에는 커스텀이라고 할 수 없겠죠? 지금부터 형태를 하나하나씩 바꿔보도록 하겠습니다.

ModelAdmin 활용하기

어드민을 커스텀하기 위해선 ModelAdmin을 활용해야 합니다.


BookAdmin이라는 ModelAdmin을 상속받은 클래스를 만들고 list_display라는 속성을 오버라이딩 해줍니다. 이때의 값들은 Book에서 넣은 속성들입니다.


리스트 추가리스트를 추가한 모습입니다.


그리고 register에 두 번째 인수로 정의한 클래스를 전달하시면 사진처럼 화면이 보여집니다. 조금 더 괜찮아졌죠?


위와 같은 것을 파이썬의 데코레이터를 통해서도 할 수 있습니다.



위의 소스코드를 복사할 땐 잊지말고 admin.site.register(Book, BookAdmin)을 지워주세요. 장고를 재실행하고 새로고침해도 똑같이 나타나는 것을 볼 수 있습니다.

더 나아가기

불편한 점은 없을까요? 제가 생각하기엔 책을 등록하고 다시 좋은 글귀쪽으로 가서 또 책에 있던 글귀를 등록하는 점이 아주 귀찮을 것 같습니다. 한 화면에서 볼 수는 없을까요? 모델을 정의할 때 ForeignKey를 통해 정의했었죠? 요렇게 관계를 맺어놨을 땐 한 화면에서 볼 수 있습니다.



admin에서 StackedInline을 상속받은 클래스를 만들고 model에 Wisesaying을 전달해줍니다. extra는 몇 칸을 만들것인 지를 알려주는 것입니다. 기본은 3이고 전 2를 주었습니다. 그리고 BookAdmin에 inlines의 값으로 해당 클래스를 전달해주세요. 그리고 admin.site.register(Wisesaying)은 지워주세요.


인라인 추가인라인이 추가된 화면입니다.


이제는 책을 등록하면서 좋은 글귀를 한번에 등록할 수 있습니다. 좋은 글귀가 더 많으면 밑에 Add another Wisesaying을 눌러주시면 기입할 수 있는 칸이 생깁니다. 점점 더 괜찮게 변하는 것을 느낄 수 있죠?



필드를 구분해주는 필드셋을 추가했습니다. 


필드셋 추가달라진 점이 느껴지나요?


필드를 나눠주니 더 깔끔하게 변했습니다. 코드를 몇 개 추가했을 뿐인데 아주 마음에 드는 커스텀 사이트가 되었습니다.



이런 사이트를 자동으로 만들어주는 장고! 정말 마음에 들지 않으세요?


댓글