공부일지

230317_DB연동을 위한 oracleapp 생성 및 웹 서버 연결 확인 본문

Computer/공부정리

230317_DB연동을 위한 oracleapp 생성 및 웹 서버 연결 확인

이르리의 공부일지 2023. 3. 19. 20:21

 

 

 

 

230317

참고.
<cx_Oracle 안 되는 경우>

>시스템 환경변수 편집

환경변수>시스템 변수>새로만들기>instantclient 21_9폴더 경로 추가>컴퓨터 다시시작


* 가상환경 하나 당 커널 이름 하나(고유커널)


* router.py는 따로 관리
-label, return 에 오는 db명 바꿔주면 계속 쓸 수 있음


django-admin startapp oracleapp

==
1교시

>config
>

>oracleapp
>views.py
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse

def cartList(request):
    return HttpResponse('잘 보인다~')


>urls
from django.urls import path
from . import views


urlpatterns = [
    # http://127.0.0.1:8000/oracle/cart_list
   path('cart_list/',views.cartList),
]




===
2교시

oracleapp>model.py

from django.db import models
from django.db.models.fields import CharField
from django.db.models.fields import IntegerField
# Create your models here.


# 클래스 이름: 보통 테이블명과 똑같이 씀(규칙), 변수도 컬럼명과 똑같이 설정
class Cart(models.Model):
    cart_no=CharField(primary_key=True, max_length=13, null=False)
    cart_prod=CharField(max_length=10, null=False)
    cart_member=CharField(max_length=15, null=False)
    cart_qty=IntegerField(max_length=8, null=False)
    
    # 내부 클래스
    class Meta:
    # 실제 사용할 테이블 이름
        db_table='cart'
        # app 이름(router.py에 설정한 앱 이름과 동일)
        app_label='oracleapp'
        # managed : db에 실제 테이블이 존재하는지 여부 파악
        # -존재하면 False
        # -DB 설계에 따라 만들어진 DB 사용하기에
        # -일반적으로 False를 지정
        managed=False



>views

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
# 테이블
# import models
#- 이 경우: models.Cart 하면 됨
from .models import Cart


# cart 테이블 전체 조회
def cartList(request):
    # 1. 모델을 통해 데이터 조회
    # 조회결과를 받아올 변수 정의 
    # objects: 객체, 여기서는 col을 뜻함
    cart_list=Cart.objects.all()
    return HttpResponse('잘 보인다~')


==
정리

1.oracleapp 생성
2.router.py 추가
3.models.py에 Cart 클래스 생성
4.views.py에서 models.Cart 호출
-전체 조회 Cart.objects.all()
5.특정 app의 모델과 실제DB 연결
-명령 순서(형상관리 쪽이라 오류가 많이 발생하는 부분이다. 형상관리 : 민감)
-특정 app의 모델이 변경(수정/추가/삭제)되면 아래 수행
서버 중지한 뒤
>python manage.py makemigrations oracleapp
*migration 안 되면 폴더 삭제 후 다시 위 명령어 반복


>python manage.py migrate


==
3교시

>python manage.py runserver


6.oracleapp에 templates\oracleapp\cart 폴더 생성
-cart_list.html 생성

7.views.py에 cartList() 함수에서 render() 생성
-html 페이지 호출
-모델을 통해 조회한 cart_list 변수를 html에 출력


==
4교시

member table 생성



<!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>
</head>
<body>
    <h3>회원 정보 목록</h3>
    <hr/>
    <!-- {{cart_list}} -->
    <table border="1">
        <tr>
            <th>회원 아이디</th>
            <th>회원 비밀번호</th>
            <th>회원 이름</th>
        </tr>
        {% for member in mem_list %}
        <tr>
            <td>{{member.mem_id}}</td>
            <td>{{member.mem_pass}}</td>
            <td>{{member.mem_name}}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>


>models

from .models import Cart, Member


>views

def memberList(request):
    mem_list=models.Member.objects.all()
    return render(request,
                  "oracleapp/mem/mem_list.html",
                  {'mem_list':mem_list})


>cmd

서버 중지한 뒤
>python manage.py makemigrations oracleapp
*migration 안 되면 폴더 삭제 후 다시 위 명령어 반복


>python manage.py migrate

>python manage.py runserver


**클래스 추가 후 테이블.html 생성 시마다 migrate 해주기


==
5교시

django 여러 feild 설명
참고 : https://velog.io/@qlgks1/Django-Model-%ED%95%84%EB%93%9Cfiled-%EB%AA%A8%EC%9D%8C%EC%A7%91



8.member테이블도 동일하게 위와 같이 처리

==

9. cart_list에서 [주문번호] 클릭 시 상세페이지로 가기
-주문번호 링크 생성
-링크 클릭 시 cart/cart_view.html 페이지에
-[주문번호와 상품코드]값을 전달해 출력되게 처리....
-함수 이름 : cartView()
-url : cart/cart_view



10.


compiler-코드 해석=>그냥 문자열로 해석(하나의 규칙대로 움직이는 것)
parser-브라우저가 코드 해석=>이 때에서야 html이구나 판단(태그확인)