본문 바로가기

programming/Gukbi

국비 교육 102일차 - django 프로젝트(리스트 출력, 페이지 나누기)

728x90
반응형

장고깔고 설정하는것 까지는 어제 블로깅한 내용과 똑같다. 

그 이후에 설정해야할 파일을 정리하면 

 

config폴더 안에 있는 urls.py에서 diaryapp에서 사용할 urlpattern을 등록해준다. 

 

urlpatterns = [
    path('admin/', admin.site.urls),
    path('main/',include('diaryapp.urls')),
]

위처럼 설정했기 때문에 main을 타고 들어오는 urls를 사용할 수 있게 된다. 

 

그리고 models.py 파일에서 dao 설정을 먼저 해준다

import cx_Oracle
# Create your models here.
def getConnection():
    try:
        conn=cx_Oracle.connect("hr/happy@localhost:1521/xe")
    except Exception as e:
        print(e)
    return conn

 cx_Oracle을 import해주고 getConnection 함수를 만들어 준다.

 

def category(no):
    conn=getConnection()
    cursor=conn.cursor()

    start=0
    end=0
    if no==1:
        start=1
        end=12
    elif no==2:
        start=13
        end=18
    elif no==3:
        start=19
        end=30

    sql=f"""
        SELECT no,title,subject,poster
        FROM food_category
        WHERE no BETWEEN {start} AND {end}
        ORDER BY no ASC 
        """
    cursor.execute(sql)
    cate_list=cursor.fetchall()
    print(cate_list)
    cursor.close()
    conn.close()

    return cate_list

 일단 카테고리 만드는 코드까지만 적어보면 이렇다

getConnection으로 받아와서 cursor를 생성한 뒤 전송할 sql문장을 만들어 준다. 

cursor.execute(sql)로 문장을 보내준 뒤, 리스트에 cursor.fetchall()로 전달 받은 값을 저장한다. 

 

받아온게 끝나면 cursor, conn을 둘다 닫아주고, 받아온 list를 return하고 끝내면 된다. 

 

 

 

views.py에서 controller처럼 값을 template쪽으로 보내준다.

from foodapp import models

models를 import해오는건 필수

 

def category(request):
    list1=models.category(1)
    cate_list1=[]
    for c in list1:
        ca={"no":c[0],"title":c[1],"poster":c[3],"subject":c[2]}
        cate_list1.append(ca)

    list2=models.category(2)
    cate_list2 = []
    for c in list2:
        ca = {"no": c[0], "title": c[1], "poster": c[3], "subject": c[2]}
        cate_list2.append(ca)

    list3=models.category(3)
    cate_list3 = []
    for c in list3:
        ca = {"no": c[0], "title": c[1], "poster": c[3], "subject": c[2]}
        cate_list3.append(ca)

    return render(request,'main/food/food_category.html',{"cate_list1":cate_list1,"cate_list2":cate_list2,"cate_list3":cate_list3})

 category를 받아오는 함수를 만들어 준다. 

일단 models에서 카테고리 리스트를 받아오고, for문을 돌려서 값을 하나씩 딕트에 저장한 뒤 새로운 리스트에 다시 저장해 준다. 카테고리의 경우 3가지로 나뉘어져 있었기 때문에 세개의 리스트를 받아서 html쪽으로 넘겨줬다. 

 

from django.urls import path
from foodapp import views

urlpatterns=[
    path('',views.category),
    path('list/',views.foodList),
    path('detail/',views.foodDetail),
]

 그리고 foodapp 밑의 urls에서 위와 같이 path를 지정해주고, html 파일에 값을 보내주기 위한 준비를 마친다. 

 

 <div class="row">
               {% for r  in cate_list1 %}
                <div class="col-md-3">
                  <div class="thumbnail">
                    <a href="#">
                      <img src={{r.poster}} alt="Lights" style="width:100%">
                      <div class="caption">
                          <p>{{r.title}}</p>
                          <sub style="font-size:7px">{{r.subject}}</sub>
                      </div>
                    </a>
                  </div>
                </div>
                {% endfor %}
            </div>

 값은 이렇게 받아와주면 끝이다. 

 

일단 오라클에서 값을 받아와서 출력해주는건 이렇게 이루어진다. 이번 장고 프로젝트는 ORM을 쓰게될지 직접 SQL문장을 써서 값을 받아오게 될지는 모르겠지만..

728x90
반응형