이번에는 원래있던 데이터베이스로부터 데이터를 로드하는 방식을 보여드리겠습니다.
저는 현재 eclipse에서 Django를 사용하고 있습니다.
RDBMS의 경우 mariadb를 사용할 것입니다.
먼저 Pydev Django Project를 생성한 후, setting.py에서 데이터베이스를 설정해줍니다.
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "test",
'USER': '사용자명',
'PASSWORD': 'DB비밀번호',
'HOST': 'localhost',
'PORT': ''
}
}
RDBMS별로 구성이 다르기에 Django홈페이지로 들어가서 자신에게 맞는 RDBMS 형태를 선택해주시면 됩니다.
그 후 애플리케이션을 생성합니다.
생성된 애플리케이션의 경우 settings.py의 INSTALLED_APPS에 추가해주셔야 합니다.
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"projectapp"
]
그리고, 아나콘다 프롬프트를 실행하여
해주시면 데이터베이스가 aaa.py(사용자가 원하는 이름으로 아무렇게나 생성해주시면됩니다) 로 이동합니다.
aaa.py에는 데이터베이스 내에 있는 테이블들이 있는데 그 중 사용자가 원하는 테이블의 정보를 그대로 models.py로 옮겨주시면 됩니다.
from django.db import models
class Customer(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, blank=True, null=True)
email = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'customer'
이렇게 models.py에 복사한후 aaa.py라는 파일은 필요없으니 지워줍니다.
그 후 migrate해주시면,
사용자가 가지고 있는 테이블외의 장고에서 자동으로 생성해주는 테이블들이 만들어집니다.
이제, application파일의 view.py에서 데이터를 보여주기 위한 뷰를 작성해보겠습니다.
from django.shortcuts import render
from projectapp.models import Customer
def ListFunc(request):
datas=Customer.objects.all()
return render(request,'list.html',{'datas':datas})
그리고, 프로젝트의 urls.py파일을 열어 urlpatterns에 다음 패턴을 추가합니다
from django.contrib import admin
from django.urls import path
from projectapp import views
urlpatterns = [
path("admin/", admin.site.urls),
path('',views.ListFunc),
]
마지막으로, 출력결과를 보여주기 위한 템플릿을 작성하면 완성입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
** 사용자 정보 **<p/>
<table border="1" style="width: 80%;">
<tr><th>사용자아이디</th><th>사용자명</th><th>사용자이메일</th></tr>
{% if datas %}
{% for s in datas %}
<tr>
<td>{{s.id}}</td>
<td>{{s.name}}</td>
<td>{{s.email}}</td>
</tr>
{% endfor %}
{% else %}
<tr><td colspan="4">자료없음</td></tr>
{% endif %}
</table>
</body>
</html>
출력결과입니다.