IT개발도상국
Django로 WEB에서 DB LIST보기(2) 본문
1. 경로 지정
>>> config/settings.py 아래와 같은 코드 추가
DATABASE_ROUTERS = [
# 사용할폴더이름.DB접근한코드파일.접근코드CLASS이름
'oracleapp.router.DBRouter',
]
2.
oracle 폴더에 router.py파일 생성
# oracle은 settings에 사용한 DATABASE에 oracle값을 불러오는것
class DBRouter:
def db_for_read(self, model, **hints):
# model._meta.app_label는 현재 모델이 속한 앱의 이름을 반환
# 이름이 'oracleapp'와 일치하는 경우 실행
if model._meta.app_label=='oracleapp':
return'oracle'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label=='oracleapp':
return'oracle'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label=='oracleapp'or\
obj2._meta.app_label=='oracleapp':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label=='oracleapp':
return db=='oracle'
return None
WEB에서 DB를 사용할 때 models 파일에서 접근할 DB에 테이블을 지정한다.
class Cart(models.Model):
cart_member = models.CharField(max_length=15, null=False)
cart_no = models.CharField(primary_key=True, max_length=13, null=False)
cart_prod = models.CharField(max_length=10 , null=False)
cart_qty = models.IntegerField(max_length=8 , null=False)
class Meta:
db_table = "cart"
app_label = "oracleapp"
managed = False
python manage.py makemigrations oracleapp
migrations/0001_initial.py으로 생성된다.
# Generated by Django 4.0.1 on 2023-04-12 02:34
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Cart',
fields=[
('cart_member', models.CharField(max_length=15)),
('cart_no', models.CharField(max_length=13, primary_key=True, serialize=False)),
('cart_prod', models.CharField(max_length=10)),
('cart_qty', models.IntegerField(max_length=8)),
],
options={
#db_table'은 해당 모델이 매핑될 데이터베이스 테이블의 이름을 정의
'db_table': 'cart',
# 'managed'는 이 모델이 Django의 관리 대상인지 여부를 나타냅니다. False로 설정된 경우,
# Django는 이 모델과 관련된 테이블을 자동으로 생성하지 않는다.
'managed': False,
},
),
migrations.CreateModel(
name='Member',
fields=[
('mem_id', models.CharField(max_length=15, primary_key=True, serialize=False)),
('mem_pass', models.CharField(max_length=15)),
('mem_name', models.CharField(max_length=20)),
('mem_add1', models.CharField(max_length=100)),
],
options={
'db_table': 'member',
'managed': False,
},
),
]
장고에서 DB와 웹을 자동으로 연결한다.
web에서 cart_list에 접근하게 경로를 준다.
* 회원전체 조회: <a href="/oracle/cart_list">[바로가기]</a>
/oracleapp/urls.py
from django.contrib import admin
from django.urls import path
from . import views as v1
# path 작성하는 규칙
urlpatterns = [
## http://127.0.01:8000/oracle/
path('', v1.index),
path('index/', v1.index),
## http://127.0.01:8000/oracle/cart_list/ 일때 getCartList의 함수 실행
path('cart_list/', v1.getCartList),
]
/oracleapp/views.py
def getCartList(request):
# - 뜻은 내림차순이다.
cart_list = Cart.objects.all().order_by("-cart_no")
return render(request, 'oracleapp/cart/cart_list.html',{"cart_list" : cart_list})
/oracleapp/cart_list.html/
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>::: 주문정보 전체 조회하기 :::</title>
<script type="text/javascript">
function goView(cart_no , cart_prod){
//url = "/oracle/cart_view/?";
//url = url + "cart_no=" +cart_no +"&cart_prod="+cart_prod;
url = "/oracle/cart_view/?";
url = url + "cart_no=" +cart_no;
url = url +"&cart_prod="+cart_prod;
// get 방식으로 전송시에는 location.href 사용
location.href = url;
}
function goCreate(){
location.href = "/oracle/cart_insert_form/";
}
</script>
</head>
<body>
<h3>주문정보 전체 조회하기</h3>
<hr/>
<button onclick="goCreate()">등록하기</button>
<table border="1">
<tr>
<th>주문번호</th>
<th>회원아이디</th>
<!-- <th>상품코드</th>
<th>주문수량</th> -->
</tr>
<!-- [mem_list 형태]
[{"mem_id":"a001","mem_pass":"ases","mem_name":"김","mem_add1":"주소"},
{"mem_id":"a001","mem_pass":"ases","mem_name":"김","mem_add1":"주소"},
.........]
-->
<!-- 무엇을 주문한지, 주문수량이 몇개인지 상세페이지 만들기 -->
{% for d in cart_list %}
<tr>
<!-- 프라이머리 키 전부 넘겨줘야 데이터베이스에서 사용할 수 있음 -->
<td>{{d.cart_no }}</td>
<td>{{d.cart_member}}</td>
<td>{{d.cart_prod}}</td>
<td>{{d.cart_qty}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
을 하면 LIST
DB정보를 확인할 수 있다.
Comments