[패스트캠퍼스python] DB에 만든 app 연결, admin페이지 출력 문자열 한글로 변경

파이썬 인강 자기계발 챌린지 30회차 미션

만들어놓은 DB에 내가 만든 앱 연결해보자.
이는 admin.py를 이용해서 진행해야한다.

1. admin.py 작성

데이터를 추가,수정한 뒤 migrate를 한 상태에서 상위 앱폴더에서 admin.py폴더를 찾는다.
그리고 migrate한 models안에 있는 내용을 import해온다.
pass는 아무것도 안하겠다는 의미이다.
그 뒤 아래와 같이 빈 클래스를 만들어 admin에 두가지(Fcuser, FcuserAdmin) 다 등록(register)한다.

1
2
3
4
5
6
7
from django.contrib import admin
from .models import Fcuser

class FcuserAdmin(admin.ModelAdmin):
pass

admin.site.register(Fcuser, FcuserAdmin)

2. python3 manage.py runserver

  1. 명령어입력
    잘 반영되었는지 runserver명령어롤 틍해 실행해보자.
    터미널에 아래 코드들이 출력되고 그 중 http://127.0.0.1:8000/를 ctrl를 누른상태에서 click하면 바로 인터넷창이 오픈된다.
1
2
3
4
5
6
7
8
9
(fcdjango_venv) C:\경로\fc_community>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
June 21, 2020 - 14:47:46
Django version 3.0.7, using settings 'fc_community.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
  1. 주소창에 admin/ 추가입력 후 enter.
    인터넷창이 오픈되면 주소뒤에 admin/을 붙여준다.
    그러면 장고에서 기본적으로 제공하는 site가 출력되면서 로그인페이지가 나타난다.
    아직 첫 아이디를 만들지 않았으므로 인터넷창을 닫아주고 터미널창에 ctrl+c 명령어를 입력하여 돌아가던 server를 멈춰준다.

3. python3 manage.py createsuperuser

  1. manage.py명령어를 통해 첫 user를 생성한다.
    자동적으로 아이디와 이메일주소, 비번과 비번확인 총 4단계의 입력과정을 거치면 드디어 생성!!

  2. 다시python3 manage.py runserver를 통해 http://127.0.0.1:8000/admin/으로 들어가서 방금 생성한 아이디와 비번으로 로그인을 한다.
    그러면 아래와 같이 사이트가 뾰로롱 생성된다.

파란색띠가 app을 나타내며

  • Authentication and Authorization 은 장고에서 제공하는 기본 앱이고
  • 내가 만들었던 fcuser앱이 정상적을 출력되고 그 아래에 만들었던 Fcusers모델이 잘 등록되어있는 것을 확인할 수 있다.
  1. add를 누른뒤 사용자명과 비밀번호를 입력하면 아래 이미지처럼 Fcuser object(1)가 생성되고 그 안에 추가로 만든 사용자명과 비밀번호를 확인할 수 있다.

이렇듯 장고는 데이터베이스를 건들이지않아도 웹페이지에서 데이터베이스를 쉽게 다룰 수 있어 정말 편리하다.
조금 아쉬운 점이 있다면 유저명이 Fcuser object(1) 이렇게 생성되어서 어떤 유저인지 한눈에 확인하기 어렵다. 이를 바꿔주는 설정을 해보자.

4. DB웹상 유저명 보기 쉽게 변경

파이썬에는 기본 문자열을 반환해주는 언더바 두개로 감싼 내장함수( str )를 가지고 있다.
이를 이용하여 문자열을 원하는대로 바꿀수있다.
fcuser앱 아래의 models.py에서 class 안에 아래 코드를 추가해주면된다.

1
2
def __str__(self): 
return self().username

5. DB웹상 다양한 유저정보 출력

원하는대로 Fcuser object(1)에서 유저명으로 변경되었다.
하지만 뭔가 좀 아쉽다.
더 많은 정보들이 한눈에 보였으면 좋겠다. 이럴때 해줄 수 있는 방법이 있다.
fcuser앱 아래의 admin.py에서 class 안에 아래 코드를 추가해주면된다.
password말고도 다양한 내용을 추가입력하면 아래 이미지처럼 한눈에 보기좋게 출력된다.

1
2
class FcuserAdmin(admin.ModelAdmin):
list_display = ('username', 'password') #튜플로 만듬

유저명 위의 카테고리설명줄도 FCUSER -> 사용자명, 비밀번호로 변경된 것을 확인할 수 있다.
이는 처음 클래스를 만들때 verbose_name="비밀번호"속성을 추가했기 때문이다.

6. admin페이지 출력 문자열 변경

admin page에서 만든 fcuser앱의 하위의 fcusers도 변경해보자.
fcuser였는데 s가 붙은 이유는 기본적으로 장고에서는 복수형태로 자동변환해서 출력해주기때문이다.

fcusers가 뭘 뜻하는지 알기 쉽게 한글명으로 변경하려면 fcuser앱 아래의 models.py에서 class안의 class Meta:에서 verbose_name을 속성을 주면 된다.

1
2
3
4
class Meta:
db_table = "fastcampus_fcuser"
verbose_name = "패스트캠퍼스 사용자"
verbose_name_plural = "패스트캠퍼스 사용자"

위에서 말했듯이 장고에서 자동적으로 복수형을 기입하기 때문에 verbose_name_plural입력하지 않는 경우 아래 이미지와 같이 패스크캠퍼스 사용자s라는 한국어에서 듣도보도 못한 문법으로 출력된다ㅋㅋㅋㅋㅋ