이번엔 Django에 데이터베이스를 연결하여 관리자 화면을 띄어보도록 하자. Django의 디비관련 초기셋팅은 sqllite로 되어있다. 하지만 좀 더 익숙한 mysql로 디비 셋팅을 해보자. mysql은 이미 로컬에 설치 되어 있다.
데이터베이스 생성 및 클라이언트 드라이버 설치
- mysql에 접속하여 데이터베이스를 생성하고 사용자 계정을 추가하자.
$ mysql -u root -p # root계정으로 로그인 mysql> create database mysite; mysql> show databases; --------------------+ | Database | +--------------------+ | information_schema | | mysite | | mysql | | performance_schema | | sys | +--------------------+ mysql> grant all privileges on mysite.* to mysiteuser@'%' identified by 'mysite1234'; # mysite디비에 아이디가 mysiteuser 비밀번호가 mysite1234인 사용자에게 모든 권한과 모든 원격지에서 접속할 권한을 부여한다 mysql> \q # mysql종료
$ mysql -u mysiteuser -p mysite # mysiteuser사용자로 mysite디비에 접속 요청 mysql> show tables; Empty set (0.00 sec)
- mysqlclient를 설치한다.
$ pip install mysqlclient
- mysqlclient설치시 에러가 발생한다면 다음 명령을 실행 후 다시 설치해본다.
$ brew install mysql-connector-c
설정 및 관리자 마이그레이션
- mysite/mysite/settings.py 편집 (74라인)
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mysite', 'USER': 'mysiteuser', 'PASSWORD': 'mysite1234', 'HOST': 'localhost', 'PORT': '3306', } }
- 데이터베이스 변경사항 반영
$ cd mysite/ $ python manage.py migrate
-
http://localhost:8000/admin 으로 접속해보자.
- 관리자 계정을 생성한다.
$ python manage.py createsuperuser Username (leave blank to use 'lohan'): mysite Email address: mysite@gmail.com Password: Password (again): The password is too similar to the email address. Password: Password (again): Superuser created successfully.
- 위에서 생성한 계정으로 로그인을 시도해본다.
Django는 모든 웹프로젝트 개발 시 반드시 사용자와 사용자의 그룹 테이블이 필요하다고 가정하고 설계 되어 있다. 위 명령만 실행하면 기본적으로 관리자 계정, 그룹 관리 테이블들이 생긴다. 경험해본 결과 굉장히 잘 만들어져 있는 백오피스이다. 얼쑤~~
mysql> show tables;
+----------------------------+
| Tables_in_mysite |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
10 rows in set (0.00 sec)