IT개발도상국

Django로 WEB에서 DB LIST보기(2) 본문

kepco/web

Django로 WEB에서 DB LIST보기(2)

블랙헤이돈 2023. 4. 13. 12:17

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