Python에서 MySQL 서버와 통신할 수 있게 해주는 파이썬용 데이터베이스 커넥터 설치
$ pip3 install mysqlclient
mysite/settings.py
를 열어보면 DATABASES
에 기본 값으로 SQLite가 설정되어있음DATABASES
의 default
에서 데이터베이스 변경DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'testdjango',
'USER' : 'root',
'HOST' : 'localhost',
'PORT' : '3306'
}
}
TIMEZONE
설정해주기LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = False # DB에 TIME_ZONE 반영을 위해 False로 설정
inspectdb
실행 시 자동으로 해당 DB에 존재하는 테이블들을 정리하여 터미널에 출력해줌❯ python3 manage.py inspectdb
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
class Test1(models.Model):
name = models.CharField(max_length=20, blank=True, null=True)
id = models.CharField(primary_key=True, max_length=20)
age = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'test1'
polls/models.py
에 붙여넣기polls/apps.py
에 존재하는 클래스를 INSTALLED_APPS
설정에 추가mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig', # 추가
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
$ python3 manage.py makemigrations polls
$ python3 manage.py migrate
polls/views.py
에 아래 내용 추가from .models import Test1 # Test1 모델 불러오기
def test_view(request):
items = Test1.objects.all() # Test1 테이블의 모든 객체를 불러와 items 변수에 저장
return render(request, 'index.html', {"items": items})
polls/urls.py
에 아래 내용 추가from . import views
urlpatterns = [
path('', views.index, name='index'),
path('items/', views.test_view),
]
polls/templates/index.html
추가<table class="table-contents" style="padding: 10px">
<tr>
<th>Name</th>
<th>Age</th>
</tr>
{% for item in items %}
<tr>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
</tr>
{%endfor%}
</table>
Django에서 제공하는 모델에 대한 관리용 인터페이스 활용해보기
$ python3 manage.py createsuperuser
Username: admin
Email address: admin@example.com
Password: **********
Password (again): *********
Superuser created successfully.
python3 manage.py runserver
LANGUAGE_CODE
를 설정하면 원하는 언어로 화면을 볼 수 있음polls/admin.py
from django.contrib import admin
from .models import Test1
admin.site.register(Test1)