새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Github
  • Selenium 4
  • 내일배움단
  • Python
  • machine learning
  • til
  • AI트랙
  • 코린이
  • 스파르타코딩클럽
  • 개발일지
  • 내일배움캠프
  • 코딩
  • 프로그래머스
  • docker
  • 국비지원
  • 코딩프로젝트
  • portfolio
  • 자기주도학습
  • TodayILearned
  • 내일배움카드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

TIL

2-5[Project] Django view와 Django 템플릿 문법

2022. 2. 6. 00:26

오늘 할 일 (계획)

1. 추가 데이터 베이스 확충 하기 

 

2. 포켓몬 얼굴상 프로젝트 자동 업데이트 설정 완료하기

 

오늘 한 일 (회고)

1. 데이터 베이스에서 views.py로 데이터 받아와서 html에서 처리하는 것 구현

이전 프로젝트에서 파이썬 파일과 js파일 이용한 방식으로 구현하다가 너무 쉽게 됨

 

html 템플릿이 렌더링 될때 category_beer 객체를 같이 전달하고 해당 내용을 장고 템플릿 문법을 통하여 for문으로 처리하여 사용하는 방식을 처음 접해봄

{% for category in category_beer %}

2. 기존 크롤링한 사이트 말고. aspx로 작성된 사이트 크롤링 구상 중

 

* 코드 

def drink_db_view(request):
    print("drink_db_view 실행확인")

    user = request.user.is_authenticated
    if user:
        ratings = pd.read_csv('./static/model/drink_ratings.csv')
        drinks = pd.read_csv('./static/model/drinks.csv', encoding='cp949')

        pd.set_option('display.max_columns', 10)
        pd.set_option('display.width', 300)

        drink_ratings = pd.merge(ratings, drinks, on='drinkid')
        # print(drink_ratings)

        # user별로 영화에 부여한 rating 값을 볼 수 있도록 pivot table 사용
        title_user = drink_ratings.pivot_table('score_x', index='userId', columns='title')

        # 평점을 부여안한 영화는 그냥 0이라고 부여
        title_user = title_user.fillna(0)
        # print(title_user)

        user_based_collab = cosine_similarity(title_user, title_user)
        # print(user_based_collab)

        user_based_collab = pd.DataFrame(user_based_collab, index=title_user.index, columns=title_user.index)
        # print(user_based_collab)

        # 접속한 유저의 아이디를 받아옴
        id = request.user.id

        # 4번 유저와 비슷한 유저를 내림차순으로 정렬한 후에, 상위 10개만 뽑음
        # print(user_based_collab[id].sort_values(ascending=False)[:10])

        # 4번 유저와 가장 비슷한 266번 유저를 뽑고,
        user = user_based_collab[id].sort_values(ascending=False)[:10].index[1]
        # 266번 유저가 좋아했던 영화를 평점 내림차순으로 출력
        category_recommend = title_user.query(f"userId == {user}").sort_values(ascending=False, by=user, axis=1)

        category_recommend = category_recommend[:30]
        # category_recommend = category_recommend.order_by('?')[:30]

        category_recommend_list = []

        for i, cate in enumerate(category_recommend):
            if i < 10:
                category_recommend_list.append(cate)
            else:
                break

        final_recommend_list = []
        for cate_search in category_recommend_list:
            temp = DrinkModel.objects.filter(title=str(cate_search).lstrip('/'))[0]
            final_recommend_list.append(temp)


        # print(final_recommend_list[0])
        # print(final_recommend_list[0][0])
        # print(final_recommend_list[0][0].title)
        # print(type(final_recommend_list))


        # for cate in category_recommend:
        #     print(cate)
        #     print("========================================================================")

        category_wine = DrinkModel.objects.filter(category_name='베스트 와인')

        category_beer = DrinkModel.objects.filter(category_name='맥주')

        category_ricewine = DrinkModel.objects.filter(category_name='청주, 약주')

        category_chinaliquor = DrinkModel.objects.filter(category_name='백주')

        category_rum = DrinkModel.objects.filter(category_name__icontains='Rum')

        return render(request, 'home.html', {'category_wine': category_wine, 'category_recommend': final_recommend_list,
                                             'category_ricewine': category_ricewine, 'category_beer': category_beer,
                                             'category_rum': category_rum,
                                             'category_chinaliquor': category_chinaliquor})


        # return render(request, 'home.html', {'category_main': category_main, 'category_recommend': category_recommend,
        #                                      'category_recommend2': category_recommend2,
        #                                      'category_random': category_random})

    else:

        category_wine = DrinkModel.objects.filter(category_name='베스트 와인')

        category_beer = DrinkModel.objects.filter(category_name='맥주')


        category_ricewine = DrinkModel.objects.filter(category_name='청주, 약주')

        category_chinaliquor = DrinkModel.objects.filter(category_name='백주')

        category_rum = DrinkModel.objects.filter(category_name__icontains='Rum')

        return render(request, 'home.html', {'category_wine': category_wine, 'category_beer': category_beer,
                                             'category_ricewine': category_ricewine,
                                             'category_rum': category_rum,
                                             'category_chinaliquor': category_chinaliquor})

 

 

 

내일 할 일

1. 추가 데이터 베이스 확충 하기 

 

2. 포켓몬 얼굴상 프로젝트 자동 업데이트 설정 완료하기

 

3. AI 분석 준비하기 - 두 번째 사이트 크롤링되면 실행할 수 있게 준비

 

4. 장고 템플릿 문법 정리

 

저작자표시 비영리 변경금지 (새창열림)

'TIL' 카테고리의 다른 글

2-7[Project] aspx 사이트 분석 크롤링 준비  (0) 2022.02.07
2-6[Project] Django를 이용한 검색기능  (0) 2022.02.06
2-4[Project] Orange bottle 크롤러  (0) 2022.02.04
2-3[Project] 정체 상태  (0) 2022.02.03
2-2[Project] SQL 쿼리문 연습  (0) 2022.02.02
    'TIL' 카테고리의 다른 글
    • 2-7[Project] aspx 사이트 분석 크롤링 준비
    • 2-6[Project] Django를 이용한 검색기능
    • 2-4[Project] Orange bottle 크롤러
    • 2-3[Project] 정체 상태
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바