오늘 할 일 (계획)
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 |