
유저가 설문을 통해 결과를 서버로 보내주면 그 결과를 기반으로 DB에서 결과값을 불러온다.
이 부분에서 약간 고민했던게 ORM을 사용할지, SQL문으로 직접 불러올지 고민이였다.
왜냐하면 결과값을 4개의 테이블 중 하나에서 가져와야했기 때문이다.
Spring에서 Mapper방식으로 Mybatis를 사용할 때는 테이블이 여러개여도 내가 테이블 명을 입력해야했기 때문에 고민할 부분이 없었다.
Mybatis는 ORM과 SQL문 그 사이에 있는 느낌이니까..
쨋든 Django로 돌아와서 ! 코드가 좀 길어지긴 해도 ORM을 사용하기로했다.
나는 Oralce, Maria DB를 배우면서 SQL문에는 꽤 익숙하다고 생각했기 때문이다.
그에 비해 ORM은 Django에 넘어와서 처음 해보는거라 연습이 필요하다고 생각했고, ORM으로 구현하기로 했다.
def Result(request):
print('Result_test')
if request.method == 'POST' :
brand_Size = request.POST.get('brand_Size')
brand_Genre = request.POST.get('brand_Genre')
design_Point = request.POST.get('design_Point')
design_Color = request.POST.get('design_Color')
avg_Price = request.POST.get('avg_Price')
# 브랜드 사이즈 확인 후 알맞은 값을 가져온다.
if brand_Size == 'Globals' :
datas = ReadGlobals(brand_Genre,design_Point, design_Color, avg_Price)
if brand_Size == 'National' :
datas = ReadNational(brand_Genre, design_Point, design_Color, avg_Price)
if brand_Size == 'Middle' :
datas = ReadMiddle(brand_Genre,design_Point, design_Color, avg_Price)
if brand_Size == 'Soho' :
datas = ReadSoho(brand_Genre, design_Point, design_Color, avg_Price)
return render(request, 'result.html',{'datas':datas})
result함수로 잘 들어오는지 확인 후, requst의 값이 POST일 경우에만 작동한다.
유저가 설문에서 선택한 값을 받아 변수로 저장한다.
그 후 브랜드 사이즈에 맞는 함수를 실행해 테이블에서 값을 가져온다.
각각의 함수에는
def ReadGlobals(genre, point, color, price):
datas = Globals.objects.filter(
brand_Genre = genre,
design_Point = point,
design_Color = color,
avg_Price = price
)
return datas
이런식으로 ORM을 사용했다.
filter의 역할은 SQL문의 where절과 동일한 역할을 한다.
읽어온 값은 datas로 리턴되어 html파일로 전달된다.