Django 시작하기(2)

이번엔 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)

comments powered by Disqus